diff --git a/debian/po/tr.po b/debian/po/tr.po index 00b127ee2b6..1037c93b86f 100644 --- a/debian/po/tr.po +++ b/debian/po/tr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-server\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2009-08-24 22:41+0300\n" -"PO-Revision-Date: 2010-01-29 05:27+0000\n" -"Last-Translator: Fabien (Open ERP) \n" +"PO-Revision-Date: 2011-05-17 20:53+0000\n" +"Last-Translator: Ayhan KIZILTAN \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-04-19 04:50+0000\n" -"X-Generator: Launchpad (build 12758)\n" +"X-Launchpad-Export-Date: 2011-05-18 06:22+0000\n" +"X-Generator: Launchpad (build 12959)\n" #. Type: string #. Description @@ -38,4 +38,4 @@ msgstr "" #. Description #: ../openerp-server.templates:1001 msgid "Please choose that account's username." -msgstr "Lütfen bu hesabın kullanıcı adını seçiniz." +msgstr "Lütfen o hesabın kullanıcı adını seçiniz." diff --git a/openerp-server b/openerp-server index 1486c493ff5..3586b11c7d2 100755 --- a/openerp-server +++ b/openerp-server @@ -39,10 +39,11 @@ import signal import sys import threading import traceback +import time -import openerp.release as release -__author__ = release.author -__version__ = release.version +import openerp +__author__ = openerp.release.author +__version__ = openerp.release.version if os.name == 'posix': import pwd @@ -53,80 +54,58 @@ if os.name == 'posix': sys.exit(1) #----------------------------------------------------------------------- -# import the tools module so that the commandline parameters are parsed +# parse the command line #----------------------------------------------------------------------- -import openerp.tools as tools -tools.config.parse_config(sys.argv[1:]) +openerp.tools.config.parse_config(sys.argv[1:]) +config = openerp.tools.config #---------------------------------------------------------- # get logger #---------------------------------------------------------- -import openerp.netsvc as netsvc -netsvc.init_logger() +openerp.netsvc.init_logger() logger = logging.getLogger('server') -logger.info("OpenERP version - %s", release.version) -for name, value in [('addons_path', tools.config['addons_path']), - ('database hostname', tools.config['db_host'] or 'localhost'), - ('database port', tools.config['db_port'] or '5432'), - ('database user', tools.config['db_user'])]: +logger.info("OpenERP version - %s", __version__) +for name, value in [('addons_path', config['addons_path']), + ('database hostname', config['db_host'] or 'localhost'), + ('database port', config['db_port'] or '5432'), + ('database user', config['db_user'])]: logger.info("%s - %s", name, value) # Don't allow if the connection to PostgreSQL done by postgres user -if tools.config['db_user'] == 'postgres': +if config['db_user'] == 'postgres': logger.error("Connecting to the database as 'postgres' user is forbidden, as it present major security issues. Shutting down.") sys.exit(1) -import time - #---------------------------------------------------------- # init net service #---------------------------------------------------------- logger.info('initialising distributed objects services') -#--------------------------------------------------------------- -# connect to the database and initialize it with base if needed -#--------------------------------------------------------------- -import openerp.pooler as pooler - -#---------------------------------------------------------- -# import basic modules -#---------------------------------------------------------- -import openerp.osv as osv -import openerp.workflow as workflow -import openerp.report as report -import openerp.service as service - -#---------------------------------------------------------- -# import addons -#---------------------------------------------------------- - -import openerp.addons as addons - #---------------------------------------------------------- # Load and update databases if requested #---------------------------------------------------------- -import openerp.service.http_server as service_http_server +if not ( config["stop_after_init"] or \ + config["translate_in"] or \ + config["translate_out"] ): + openerp.osv.osv.start_object_proxy() + openerp.service.web_services.start_web_services() + http_server = openerp.service.http_server + netrpc_server = openerp.service.netrpc_server + http_server.init_servers() + http_server.init_xmlrpc() + http_server.init_static_http() + netrpc_server.init_servers() -if not ( tools.config["stop_after_init"] or \ - tools.config["translate_in"] or \ - tools.config["translate_out"] ): - service_http_server.init_servers() - service_http_server.init_xmlrpc() - service_http_server.init_static_http() - - import openerp.service.netrpc_server as service_netrpc_server - service_netrpc_server.init_servers() - -if tools.config['db_name']: - for dbname in tools.config['db_name'].split(','): - db,pool = pooler.get_db_and_pool(dbname, update_module=tools.config['init'] or tools.config['update'], pooljobs=False) +if config['db_name']: + for dbname in config['db_name'].split(','): + db, pool = openerp.pooler.get_db_and_pool(dbname, update_module=config['init'] or config['update'], pooljobs=False) cr = db.cursor() - if tools.config["test_file"]: - logger.info('loading test file %s', tools.config["test_file"]) - tools.convert_yaml_import(cr, 'base', file(tools.config["test_file"]), {}, 'test', True) + if config["test_file"]: + logger.info('loading test file %s', config["test_file"]) + openerp.tools.convert_yaml_import(cr, 'base', file(config["test_file"]), {}, 'test', True) cr.rollback() pool.get('ir.cron')._poolJobs(db.dbname) @@ -136,35 +115,33 @@ if tools.config['db_name']: #---------------------------------------------------------- # translation stuff #---------------------------------------------------------- -if tools.config["translate_out"]: - import csv - - if tools.config["language"]: - msg = "language %s" % (tools.config["language"],) +if config["translate_out"]: + if config["language"]: + msg = "language %s" % (config["language"],) else: msg = "new language" - logger.info('writing translation file for %s to %s', msg, tools.config["translate_out"]) + logger.info('writing translation file for %s to %s', msg, config["translate_out"]) - fileformat = os.path.splitext(tools.config["translate_out"])[-1][1:].lower() - buf = file(tools.config["translate_out"], "w") - dbname = tools.config['db_name'] - cr = pooler.get_db(dbname).cursor() - tools.trans_export(tools.config["language"], tools.config["translate_modules"] or ["all"], buf, fileformat, cr) + fileformat = os.path.splitext(config["translate_out"])[-1][1:].lower() + buf = file(config["translate_out"], "w") + dbname = config['db_name'] + cr = openerp.pooler.get_db(dbname).cursor() + openerp.tools.trans_export(config["language"], config["translate_modules"] or ["all"], buf, fileformat, cr) cr.close() buf.close() logger.info('translation file written successfully') sys.exit(0) -if tools.config["translate_in"]: - context = {'overwrite': tools.config["overwrite_existing_translations"]} - dbname = tools.config['db_name'] - cr = pooler.get_db(dbname).cursor() - tools.trans_load(cr, - tools.config["translate_in"], - tools.config["language"], +if config["translate_in"]: + context = {'overwrite': config["overwrite_existing_translations"]} + dbname = config['db_name'] + cr = openerp.pooler.get_db(dbname).cursor() + openerp.tools.trans_load(cr, + config["translate_in"], + config["language"], context=context) - tools.trans_update_res_ids(cr) + openerp.tools.trans_update_res_ids(cr) cr.commit() cr.close() sys.exit(0) @@ -172,9 +149,10 @@ if tools.config["translate_in"]: #---------------------------------------------------------------------------------- # if we don't want the server to continue to run after initialization, we quit here #---------------------------------------------------------------------------------- -if tools.config["stop_after_init"]: +if config["stop_after_init"]: sys.exit(0) +openerp.netsvc.start_agent() #---------------------------------------------------------- # Launch Servers @@ -186,15 +164,16 @@ SIGNALS = dict( [(getattr(signal, sign), sign) for sign in LST_SIGNALS] ) -netsvc.quit_signals_received = 0 +quit_signals_received = 0 def handler(signum, frame): """ :param signum: the signal number :param frame: the interrupted stack frame or None """ - netsvc.quit_signals_received += 1 - if netsvc.quit_signals_received > 1: + global quit_signals_received + quit_signals_received += 1 + if quit_signals_received > 1: sys.stderr.write("Forced shutdown.\n") os._exit(0) @@ -219,10 +198,10 @@ if os.name == 'posix': signal.signal(signal.SIGQUIT, dumpstacks) def quit(): - netsvc.Agent.quit() - netsvc.Server.quitAll() - if tools.config['pidfile']: - os.unlink(tools.config['pidfile']) + openerp.netsvc.Agent.quit() + openerp.netsvc.Server.quitAll() + if config['pidfile']: + os.unlink(config['pidfile']) logger = logging.getLogger('shutdown') logger.info("Initiating OpenERP Server shutdown") logger.info("Hit CTRL-C again or send a second signal to immediately terminate the server...") @@ -240,17 +219,17 @@ def quit(): time.sleep(0.05) sys.exit(0) -if tools.config['pidfile']: - fd = open(tools.config['pidfile'], 'w') +if config['pidfile']: + fd = open(config['pidfile'], 'w') pidtext = "%d" % (os.getpid()) fd.write(pidtext) fd.close() -netsvc.Server.startAll() +openerp.netsvc.Server.startAll() logger.info('OpenERP server is running, waiting for connections...') -while netsvc.quit_signals_received == 0: +while quit_signals_received == 0: time.sleep(60) quit() diff --git a/openerp/__init__.py b/openerp/__init__.py index c5f7732edd0..b7b5fc1b533 100644 --- a/openerp/__init__.py +++ b/openerp/__init__.py @@ -19,9 +19,14 @@ # ############################################################################## +""" OpenERP core library. + +""" + import addons -import ir +import conf import loglevels +import modules import netsvc import osv import pooler diff --git a/openerp/addons/__init__.py b/openerp/addons/__init__.py index af080724136..88a0d113151 100644 --- a/openerp/addons/__init__.py +++ b/openerp/addons/__init__.py @@ -20,960 +20,16 @@ # ############################################################################## -import os, sys, imp -from os.path import join as opj -import itertools -import zipimport +""" Addons module. -import openerp.osv as osv -import openerp.tools as tools -import openerp.tools.osutil as osutil -from openerp.tools.safe_eval import safe_eval as eval -import openerp.pooler as pooler -from openerp.tools.translate import _ +This module only serves to contain OpenERP addons. For the code to +manage those addons, see openerp.modules. This module conveniently +reexports some symbols from openerp.modules. Importing them from here +is deprecated. -import openerp.netsvc as netsvc - -import zipfile -import openerp.release as release - -import re -import base64 -from zipfile import PyZipFile, ZIP_DEFLATED -from cStringIO import StringIO - -import logging - -logger = netsvc.Logger() - -_ad = os.path.dirname(__file__) # default addons path (base) -ad_paths = [] - -# Modules already loaded -loaded = [] - -def initialize_sys_path(): - global ad_paths - - if ad_paths: - return - - ad_paths = map(lambda m: os.path.abspath(tools.ustr(m.strip())), tools.config['addons_path'].split(',')) - - sys.path.insert(1, _ad) - - ad_cnt=1 - for adp in ad_paths: - if adp != _ad: - sys.path.insert(ad_cnt, adp) - ad_cnt+=1 - - ad_paths.append(_ad) # for get_module_path - -class Graph(dict): - - def addNode(self, name, deps): - max_depth, father = 0, None - for n in [Node(x, self) for x in deps]: - if n.depth >= max_depth: - father = n - max_depth = n.depth - if father: - father.addChild(name) - else: - Node(name, self) - - def update_from_db(self, cr): - if not len(self): - return - # update the graph with values from the database (if exist) - ## First, we set the default values for each package in graph - additional_data = dict.fromkeys(self.keys(), {'id': 0, 'state': 'uninstalled', 'dbdemo': False, 'installed_version': None}) - ## Then we get the values from the database - cr.execute('SELECT name, id, state, demo AS dbdemo, latest_version AS installed_version' - ' FROM ir_module_module' - ' WHERE name IN %s',(tuple(additional_data),) - ) - - ## and we update the default values with values from the database - additional_data.update(dict([(x.pop('name'), x) for x in cr.dictfetchall()])) - - for package in self.values(): - for k, v in additional_data[package.name].items(): - setattr(package, k, v) - - def __iter__(self): - level = 0 - done = set(self.keys()) - while done: - level_modules = [(name, module) for name, module in self.items() if module.depth==level] - for name, module in level_modules: - done.remove(name) - yield module - level += 1 - -class Singleton(object): - def __new__(cls, name, graph): - if name in graph: - inst = graph[name] - else: - inst = object.__new__(cls) - inst.name = name - graph[name] = inst - return inst - - -class Node(Singleton): - - def __init__(self, name, graph): - self.graph = graph - if not hasattr(self, 'children'): - self.children = [] - if not hasattr(self, 'depth'): - self.depth = 0 - - def addChild(self, name): - node = Node(name, self.graph) - node.depth = self.depth + 1 - if node not in self.children: - self.children.append(node) - for attr in ('init', 'update', 'demo'): - if hasattr(self, attr): - setattr(node, attr, True) - self.children.sort(lambda x, y: cmp(x.name, y.name)) - - def __setattr__(self, name, value): - super(Singleton, self).__setattr__(name, value) - if name in ('init', 'update', 'demo'): - tools.config[name][self.name] = 1 - for child in self.children: - setattr(child, name, value) - if name == 'depth': - for child in self.children: - setattr(child, name, value + 1) - - def __iter__(self): - return itertools.chain(iter(self.children), *map(iter, self.children)) - - def __str__(self): - return self._pprint() - - def _pprint(self, depth=0): - s = '%s\n' % self.name - for c in self.children: - s += '%s`-> %s' % (' ' * depth, c._pprint(depth+1)) - return s - - -def get_module_path(module, downloaded=False): - """Return the path of the given module.""" - initialize_sys_path() - for adp in ad_paths: - if os.path.exists(opj(adp, module)) or os.path.exists(opj(adp, '%s.zip' % module)): - return opj(adp, module) - - if downloaded: - return opj(_ad, module) - logger.notifyChannel('init', netsvc.LOG_WARNING, 'module %s: module not found' % (module,)) - return False - - -def get_module_filetree(module, dir='.'): - path = get_module_path(module) - if not path: - return False - - dir = os.path.normpath(dir) - if dir == '.': - dir = '' - if dir.startswith('..') or (dir and dir[0] == '/'): - raise Exception('Cannot access file outside the module') - - if not os.path.isdir(path): - # zipmodule - zip = zipfile.ZipFile(path + ".zip") - files = ['/'.join(f.split('/')[1:]) for f in zip.namelist()] - else: - files = osutil.listdir(path, True) - - tree = {} - for f in files: - if not f.startswith(dir): - continue - - if dir: - f = f[len(dir)+int(not dir.endswith('/')):] - lst = f.split(os.sep) - current = tree - while len(lst) != 1: - current = current.setdefault(lst.pop(0), {}) - current[lst.pop(0)] = None - - return tree - -def zip_directory(directory, b64enc=True, src=True): - """Compress a directory - - @param directory: The directory to compress - @param base64enc: if True the function will encode the zip file with base64 - @param src: Integrate the source files - - @return: a string containing the zip file - """ - - RE_exclude = re.compile('(?:^\..+\.swp$)|(?:\.py[oc]$)|(?:\.bak$)|(?:\.~.~$)', re.I) - - def _zippy(archive, path, src=True): - path = os.path.abspath(path) - base = os.path.basename(path) - for f in osutil.listdir(path, True): - bf = os.path.basename(f) - if not RE_exclude.search(bf) and (src or bf in ('__openerp__.py', '__terp__.py') or not bf.endswith('.py')): - archive.write(os.path.join(path, f), os.path.join(base, f)) - - archname = StringIO() - archive = PyZipFile(archname, "w", ZIP_DEFLATED) - - # for Python 2.5, ZipFile.write() still expects 8-bit strings (2.6 converts to utf-8) - directory = tools.ustr(directory).encode('utf-8') - - archive.writepy(directory) - _zippy(archive, directory, src=src) - archive.close() - archive_data = archname.getvalue() - archname.close() - - if b64enc: - return base64.encodestring(archive_data) - - return archive_data - -def get_module_as_zip(modulename, b64enc=True, src=True): - """Generate a module as zip file with the source or not and can do a base64 encoding - - @param modulename: The module name - @param b64enc: if True the function will encode the zip file with base64 - @param src: Integrate the source files - - @return: a stream to store in a file-like object - """ - - ap = get_module_path(str(modulename)) - if not ap: - raise Exception('Unable to find path for module %s' % modulename) - - ap = ap.encode('utf8') - if os.path.isfile(ap + '.zip'): - val = file(ap + '.zip', 'rb').read() - if b64enc: - val = base64.encodestring(val) - else: - val = zip_directory(ap, b64enc, src) - - return val - - -def get_module_resource(module, *args): - """Return the full path of a resource of the given module. - - @param module: the module - @param args: the resource path components - - @return: absolute path to the resource - """ - a = get_module_path(module) - if not a: return False - resource_path = opj(a, *args) - if zipfile.is_zipfile( a +'.zip') : - zip = zipfile.ZipFile( a + ".zip") - files = ['/'.join(f.split('/')[1:]) for f in zip.namelist()] - resource_path = '/'.join(args) - if resource_path in files: - return opj(a, resource_path) - elif os.path.exists(resource_path): - return resource_path - return False - -def get_modules(): - """Returns the list of module names - """ - def listdir(dir): - def clean(name): - name = os.path.basename(name) - if name[-4:] == '.zip': - name = name[:-4] - return name - - def is_really_module(name): - name = opj(dir, name) - return os.path.isdir(name) or zipfile.is_zipfile(name) - return map(clean, filter(is_really_module, os.listdir(dir))) - - plist = [] - initialize_sys_path() - for ad in ad_paths: - plist.extend(listdir(ad)) - return list(set(plist)) - -def load_information_from_description_file(module): - """ - :param module: The name of the module (sale, purchase, ...) - """ - - for filename in ['__openerp__.py', '__terp__.py']: - description_file = get_module_resource(module, filename) - if description_file : - desc_f = tools.file_open(description_file) - try: - return eval(desc_f.read()) - finally: - desc_f.close() - - #TODO: refactor the logger in this file to follow the logging guidelines - # for 6.0 - logging.getLogger('addons').debug('The module %s does not contain a description file:'\ - '__openerp__.py or __terp__.py (deprecated)', module) - return {} - -def get_modules_with_version(): - modules = get_modules() - res = {} - for module in modules: - try: - info = load_information_from_description_file(module) - res[module] = "%s.%s" % (release.major_version, info['version']) - except Exception, e: - continue - return res - -def create_graph(cr, module_list, force=None): - graph = Graph() - upgrade_graph(graph, cr, module_list, force) - return graph - -def upgrade_graph(graph, cr, module_list, force=None): - if force is None: - force = [] - packages = [] - len_graph = len(graph) - for module in module_list: - mod_path = get_module_path(module) - terp_file = get_module_resource(module, '__openerp__.py') - if not terp_file: - terp_file = get_module_resource(module, '__terp__.py') - if not mod_path or not terp_file: - logger.notifyChannel('init', netsvc.LOG_WARNING, 'module %s: not found, skipped' % (module)) - continue - - if os.path.isfile(terp_file) or zipfile.is_zipfile(mod_path+'.zip'): - terp_f = tools.file_open(terp_file) - try: - info = eval(terp_f.read()) - except Exception: - logger.notifyChannel('init', netsvc.LOG_ERROR, 'module %s: eval file %s' % (module, terp_file)) - raise - finally: - terp_f.close() - if info.get('installable', True): - packages.append((module, info.get('depends', []), info)) - else: - logger.notifyChannel('init', netsvc.LOG_WARNING, 'module %s: not installable, skipped' % (module)) - - dependencies = dict([(p, deps) for p, deps, data in packages]) - current, later = set([p for p, dep, data in packages]), set() - - while packages and current > later: - package, deps, data = packages[0] - - # if all dependencies of 'package' are already in the graph, add 'package' in the graph - if reduce(lambda x, y: x and y in graph, deps, True): - if not package in current: - packages.pop(0) - continue - later.clear() - current.remove(package) - graph.addNode(package, deps) - node = Node(package, graph) - node.data = data - for kind in ('init', 'demo', 'update'): - if package in tools.config[kind] or 'all' in tools.config[kind] or kind in force: - setattr(node, kind, True) - else: - later.add(package) - packages.append((package, deps, data)) - packages.pop(0) - - graph.update_from_db(cr) - - for package in later: - unmet_deps = filter(lambda p: p not in graph, dependencies[package]) - logger.notifyChannel('init', netsvc.LOG_ERROR, 'module %s: Unmet dependencies: %s' % (package, ', '.join(unmet_deps))) - - result = len(graph) - len_graph - if result != len(module_list): - logger.notifyChannel('init', netsvc.LOG_WARNING, 'Not all modules have loaded.') - return result - - -def init_module_objects(cr, module_name, obj_list): - logger.notifyChannel('init', netsvc.LOG_INFO, 'module %s: creating or updating database tables' % module_name) - todo = [] - for obj in obj_list: - try: - result = obj._auto_init(cr, {'module': module_name}) - except Exception, e: - raise - if result: - todo += result - if hasattr(obj, 'init'): - obj.init(cr) - cr.commit() - todo.sort() - for t in todo: - t[1](cr, *t[2]) - cr.commit() - - -def register_class(m): - """ - Register module named m, if not already registered - """ - - def log(e): - mt = isinstance(e, zipimport.ZipImportError) and 'zip ' or '' - msg = "Couldn't load %smodule %s" % (mt, m) - logger.notifyChannel('init', netsvc.LOG_CRITICAL, msg) - logger.notifyChannel('init', netsvc.LOG_CRITICAL, e) - - global loaded - if m in loaded: - return - logger.notifyChannel('init', netsvc.LOG_INFO, 'module %s: registering objects' % m) - mod_path = get_module_path(m) - - initialize_sys_path() - try: - zip_mod_path = mod_path + '.zip' - if not os.path.isfile(zip_mod_path): - fm = imp.find_module(m, ad_paths) - try: - imp.load_module(m, *fm) - finally: - if fm[0]: - fm[0].close() - else: - zimp = zipimport.zipimporter(zip_mod_path) - zimp.load_module(m) - except Exception, e: - log(e) - raise - else: - loaded.append(m) - - -class MigrationManager(object): - """ - This class manage the migration of modules - Migrations files must be python files containing a "migrate(cr, installed_version)" function. - Theses files must respect a directory tree structure: A 'migrations' folder which containt a - folder by version. Version can be 'module' version or 'server.module' version (in this case, - the files will only be processed by this version of the server). Python file names must start - by 'pre' or 'post' and will be executed, respectively, before and after the module initialisation - Example: - - - `-- migrations - |-- 1.0 - | |-- pre-update_table_x.py - | |-- pre-update_table_y.py - | |-- post-clean-data.py - | `-- README.txt # not processed - |-- 5.0.1.1 # files in this folder will be executed only on a 5.0 server - | |-- pre-delete_table_z.py - | `-- post-clean-data.py - `-- foo.py # not processed - - This similar structure is generated by the maintenance module with the migrations files get by - the maintenance contract - - """ - def __init__(self, cr, graph): - self.cr = cr - self.graph = graph - self.migrations = {} - self._get_files() - - def _get_files(self): - - """ - import addons.base.maintenance.utils as maintenance_utils - maintenance_utils.update_migrations_files(self.cr) - #""" - - for pkg in self.graph: - self.migrations[pkg.name] = {} - if not (hasattr(pkg, 'update') or pkg.state == 'to upgrade'): - continue - - self.migrations[pkg.name]['module'] = get_module_filetree(pkg.name, 'migrations') or {} - self.migrations[pkg.name]['maintenance'] = get_module_filetree('base', 'maintenance/migrations/' + pkg.name) or {} - - def migrate_module(self, pkg, stage): - assert stage in ('pre', 'post') - stageformat = {'pre': '[>%s]', - 'post': '[%s>]', - } - - if not (hasattr(pkg, 'update') or pkg.state == 'to upgrade'): - return - - def convert_version(version): - if version.startswith(release.major_version) and version != release.major_version: - return version # the version number already containt the server version - return "%s.%s" % (release.major_version, version) - - def _get_migration_versions(pkg): - def __get_dir(tree): - return [d for d in tree if tree[d] is not None] - - versions = list(set( - __get_dir(self.migrations[pkg.name]['module']) + - __get_dir(self.migrations[pkg.name]['maintenance']) - )) - versions.sort(key=lambda k: parse_version(convert_version(k))) - return versions - - def _get_migration_files(pkg, version, stage): - """ return a list of tuple (module, file) - """ - m = self.migrations[pkg.name] - lst = [] - - mapping = {'module': opj(pkg.name, 'migrations'), - 'maintenance': opj('base', 'maintenance', 'migrations', pkg.name), - } - - for x in mapping.keys(): - if version in m[x]: - for f in m[x][version]: - if m[x][version][f] is not None: - continue - if not f.startswith(stage + '-'): - continue - lst.append(opj(mapping[x], version, f)) - lst.sort() - return lst - - def mergedict(a, b): - a = a.copy() - a.update(b) - return a - - from openerp.tools.parse_version import parse_version - - parsed_installed_version = parse_version(pkg.installed_version or '') - current_version = parse_version(convert_version(pkg.data.get('version', '0'))) - - versions = _get_migration_versions(pkg) - - for version in versions: - if parsed_installed_version < parse_version(convert_version(version)) <= current_version: - - strfmt = {'addon': pkg.name, - 'stage': stage, - 'version': stageformat[stage] % version, - } - - for pyfile in _get_migration_files(pkg, version, stage): - name, ext = os.path.splitext(os.path.basename(pyfile)) - if ext.lower() != '.py': - continue - mod = fp = fp2 = None - try: - fp = tools.file_open(pyfile) - - # imp.load_source need a real file object, so we create - # one from the file-like object we get from file_open - fp2 = os.tmpfile() - fp2.write(fp.read()) - fp2.seek(0) - try: - mod = imp.load_source(name, pyfile, fp2) - logger.notifyChannel('migration', netsvc.LOG_INFO, 'module %(addon)s: Running migration %(version)s %(name)s' % mergedict({'name': mod.__name__}, strfmt)) - mod.migrate(self.cr, pkg.installed_version) - except ImportError: - logger.notifyChannel('migration', netsvc.LOG_ERROR, 'module %(addon)s: Unable to load %(stage)s-migration file %(file)s' % mergedict({'file': pyfile}, strfmt)) - raise - except AttributeError: - logger.notifyChannel('migration', netsvc.LOG_ERROR, 'module %(addon)s: Each %(stage)s-migration file must have a "migrate(cr, installed_version)" function' % strfmt) - except: - raise - finally: - if fp: - fp.close() - if fp2: - fp2.close() - if mod: - del mod - -log = logging.getLogger('init') - -def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=None, **kwargs): - """Migrates+Updates or Installs all module nodes from ``graph`` - :param graph: graph of module nodes to load - :param status: status dictionary for keeping track of progress - :param perform_checks: whether module descriptors should be checked for validity (prints warnings - for same cases, and even raise osv_except if certificate is invalid) - :param skip_modules: optional list of module names (packages) which have previously been loaded and can be skipped - :return: list of modules that were installed or updated - """ - def process_sql_file(cr, fp): - queries = fp.read().split(';') - for query in queries: - new_query = ' '.join(query.split()) - if new_query: - cr.execute(new_query) - - def load_init_update_xml(cr, m, idref, mode, kind): - for filename in package.data.get('%s_xml' % kind, []): - logger.notifyChannel('init', netsvc.LOG_INFO, 'module %s: loading %s' % (m, filename)) - _, ext = os.path.splitext(filename) - fp = tools.file_open(opj(m, filename)) - try: - if ext == '.csv': - noupdate = (kind == 'init') - tools.convert_csv_import(cr, m, os.path.basename(filename), fp.read(), idref, mode=mode, noupdate=noupdate) - elif ext == '.sql': - process_sql_file(cr, fp) - elif ext == '.yml': - tools.convert_yaml_import(cr, m, fp, idref, mode=mode, **kwargs) - else: - tools.convert_xml_import(cr, m, fp, idref, mode=mode, **kwargs) - finally: - fp.close() - - def load_demo_xml(cr, m, idref, mode): - for xml in package.data.get('demo_xml', []): - name, ext = os.path.splitext(xml) - logger.notifyChannel('init', netsvc.LOG_INFO, 'module %s: loading %s' % (m, xml)) - fp = tools.file_open(opj(m, xml)) - try: - if ext == '.csv': - tools.convert_csv_import(cr, m, os.path.basename(xml), fp.read(), idref, mode=mode, noupdate=True) - elif ext == '.yml': - tools.convert_yaml_import(cr, m, fp, idref, mode=mode, noupdate=True, **kwargs) - else: - tools.convert_xml_import(cr, m, fp, idref, mode=mode, noupdate=True, **kwargs) - finally: - fp.close() - - def load_data(cr, module_name, id_map, mode): - _load_data(cr, module_name, id_map, mode, 'data') - - def load_demo(cr, module_name, id_map, mode): - _load_data(cr, module_name, id_map, mode, 'demo') - - def load_test(cr, module_name, id_map, mode): - cr.commit() - if not tools.config.options['test_disable']: - try: - _load_data(cr, module_name, id_map, mode, 'test') - except Exception, e: - logging.getLogger('test').exception('Tests failed to execute in module %s', module_name) - finally: - if tools.config.options['test_commit']: - cr.commit() - else: - cr.rollback() - - def _load_data(cr, module_name, id_map, mode, kind): - for filename in package.data.get(kind, []): - noupdate = (kind == 'demo') - _, ext = os.path.splitext(filename) - log.info("module %s: loading %s", module_name, filename) - pathname = os.path.join(module_name, filename) - file = tools.file_open(pathname) - try: - if ext == '.sql': - process_sql_file(cr, file) - elif ext == '.csv': - noupdate = (kind == 'init') - tools.convert_csv_import(cr, module_name, pathname, file.read(), id_map, mode, noupdate) - elif ext == '.yml': - tools.convert_yaml_import(cr, module_name, file, id_map, mode, noupdate) - else: - tools.convert_xml_import(cr, module_name, file, id_map, mode, noupdate) - finally: - file.close() - - # **kwargs is passed directly to convert_xml_import - if not status: - status = {} - - status = status.copy() - processed_modules = [] - statusi = 0 - pool = pooler.get_pool(cr.dbname) - migrations = MigrationManager(cr, graph) - modobj = None - logger.notifyChannel('init', netsvc.LOG_DEBUG, 'loading %d packages..' % len(graph)) - - for package in graph: - if skip_modules and package.name in skip_modules: - continue - logger.notifyChannel('init', netsvc.LOG_INFO, 'module %s: loading objects' % package.name) - migrations.migrate_module(package, 'pre') - register_class(package.name) - modules = pool.instanciate(package.name, cr) - if hasattr(package, 'init') or hasattr(package, 'update') or package.state in ('to install', 'to upgrade'): - init_module_objects(cr, package.name, modules) - cr.commit() - - for package in graph: - status['progress'] = (float(statusi)+0.1) / len(graph) - m = package.name - mid = package.id - - if skip_modules and m in skip_modules: - continue - - if modobj is None: - modobj = pool.get('ir.module.module') - - if modobj and perform_checks: - modobj.check(cr, 1, [mid]) - - idref = {} - status['progress'] = (float(statusi)+0.4) / len(graph) - - mode = 'update' - if hasattr(package, 'init') or package.state == 'to install': - mode = 'init' - - if hasattr(package, 'init') or hasattr(package, 'update') or package.state in ('to install', 'to upgrade'): - for kind in ('init', 'update'): - if package.state=='to upgrade': - # upgrading the module information - modobj.write(cr, 1, [mid], modobj.get_values_from_terp(package.data)) - load_init_update_xml(cr, m, idref, mode, kind) - load_data(cr, m, idref, mode) - if hasattr(package, 'demo') or (package.dbdemo and package.state != 'installed'): - status['progress'] = (float(statusi)+0.75) / len(graph) - load_demo_xml(cr, m, idref, mode) - load_demo(cr, m, idref, mode) - cr.execute('update ir_module_module set demo=%s where id=%s', (True, mid)) - - # launch tests only in demo mode, as most tests will depend - # on demo data. Other tests can be added into the regular - # 'data' section, but should probably not alter the data, - # as there is no rollback. - load_test(cr, m, idref, mode) - - processed_modules.append(package.name) - - migrations.migrate_module(package, 'post') - - if modobj: - ver = release.major_version + '.' + package.data.get('version', '1.0') - # Set new modules and dependencies - modobj.write(cr, 1, [mid], {'state': 'installed', 'latest_version': ver}) - cr.commit() - # Update translations for all installed languages - modobj.update_translations(cr, 1, [mid], None) - cr.commit() - - package.state = 'installed' - for kind in ('init', 'demo', 'update'): - if hasattr(package, kind): - delattr(package, kind) - - statusi += 1 - - cr.commit() - - return processed_modules - -def _check_module_names(cr, module_names): - mod_names = set(module_names) - if 'base' in mod_names: - # ignore dummy 'all' module - if 'all' in mod_names: - mod_names.remove('all') - if mod_names: - cr.execute("SELECT count(id) AS count FROM ir_module_module WHERE name in %s", (tuple(mod_names),)) - if cr.dictfetchone()['count'] != len(mod_names): - # find out what module name(s) are incorrect: - cr.execute("SELECT name FROM ir_module_module") - incorrect_names = mod_names.difference([x['name'] for x in cr.dictfetchall()]) - logging.getLogger('init').warning('invalid module names, ignored: %s', ", ".join(incorrect_names)) - -def load_modules(db, force_demo=False, status=None, update_module=False): - - initialize_sys_path() - - # Backward compatibility: addons don't have to import openerp.xxx, they still can import xxx - for k, v in list(sys.modules.items()): - if k.startswith('openerp.') and sys.modules.get(k[8:]) is None: - sys.modules[k[8:]] = v - - if not status: - status = {} - cr = db.cursor() - if cr: - cr.execute("SELECT relname FROM pg_class WHERE relkind='r' AND relname='ir_module_module'") - if len(cr.fetchall())==0: - logger.notifyChannel("init", netsvc.LOG_INFO, "init db") - tools.init_db(cr) - tools.config["init"]["all"] = 1 - tools.config['update']['all'] = 1 - if not tools.config['without_demo']: - tools.config["demo"]['all'] = 1 - force = [] - if force_demo: - force.append('demo') - - # This is a brand new pool, just created in pooler.get_db_and_pool() - pool = pooler.get_pool(cr.dbname) - - try: - processed_modules = [] - report = tools.assertion_report() - # NOTE: Try to also load the modules that have been marked as uninstallable previously... - STATES_TO_LOAD = ['installed', 'to upgrade', 'uninstallable'] - if 'base' in tools.config['update'] or 'all' in tools.config['update']: - cr.execute("update ir_module_module set state=%s where name=%s and state=%s", ('to upgrade', 'base', 'installed')) - - # STEP 1: LOAD BASE (must be done before module dependencies can be computed for later steps) - graph = create_graph(cr, ['base'], force) - if not graph: - logger.notifyChannel('init', netsvc.LOG_CRITICAL, 'module base cannot be loaded! (hint: verify addons-path)') - raise osv.osv.except_osv(_('Could not load base module'), _('module base cannot be loaded! (hint: verify addons-path)')) - processed_modules.extend(load_module_graph(cr, graph, status, perform_checks=(not update_module), report=report)) - - if tools.config['load_language']: - for lang in tools.config['load_language'].split(','): - tools.load_language(cr, lang) - - # STEP 2: Mark other modules to be loaded/updated - if update_module: - modobj = pool.get('ir.module.module') - logger.notifyChannel('init', netsvc.LOG_INFO, 'updating modules list') - if ('base' in tools.config['init']) or ('base' in tools.config['update']): - modobj.update_list(cr, 1) - - _check_module_names(cr, itertools.chain(tools.config['init'].keys(), tools.config['update'].keys())) - - mods = [k for k in tools.config['init'] if tools.config['init'][k]] - if mods: - ids = modobj.search(cr, 1, ['&', ('state', '=', 'uninstalled'), ('name', 'in', mods)]) - if ids: - modobj.button_install(cr, 1, ids) - - mods = [k for k in tools.config['update'] if tools.config['update'][k]] - if mods: - ids = modobj.search(cr, 1, ['&', ('state', '=', 'installed'), ('name', 'in', mods)]) - if ids: - modobj.button_upgrade(cr, 1, ids) - - cr.execute("update ir_module_module set state=%s where name=%s", ('installed', 'base')) - - STATES_TO_LOAD += ['to install'] - - - # STEP 3: Load marked modules (skipping base which was done in STEP 1) - loop_guardrail = 0 - while True: - loop_guardrail += 1 - if loop_guardrail > 100: - raise ValueError('Possible recursive module tree detected, aborting.') - cr.execute("SELECT name from ir_module_module WHERE state IN %s" ,(tuple(STATES_TO_LOAD),)) - - module_list = [name for (name,) in cr.fetchall() if name not in graph] - if not module_list: - break - - new_modules_in_graph = upgrade_graph(graph, cr, module_list, force) - if new_modules_in_graph == 0: - # nothing to load - break - - logger.notifyChannel('init', netsvc.LOG_DEBUG, 'Updating graph with %d more modules' % (len(module_list))) - processed_modules.extend(load_module_graph(cr, graph, status, report=report, skip_modules=processed_modules)) - - # load custom models - cr.execute('select model from ir_model where state=%s', ('manual',)) - for model in cr.dictfetchall(): - pool.get('ir.model').instanciate(cr, 1, model['model'], {}) - - # STEP 4: Finish and cleanup - if processed_modules: - cr.execute("""select model,name from ir_model where id NOT IN (select distinct model_id from ir_model_access)""") - for (model, name) in cr.fetchall(): - model_obj = pool.get(model) - if model_obj and not isinstance(model_obj, osv.osv.osv_memory): - logger.notifyChannel('init', netsvc.LOG_WARNING, 'object %s (%s) has no access rules!' % (model, name)) - - # Temporary warning while we remove access rights on osv_memory objects, as they have - # been replaced by owner-only access rights - cr.execute("""select distinct mod.model, mod.name from ir_model_access acc, ir_model mod where acc.model_id = mod.id""") - for (model, name) in cr.fetchall(): - model_obj = pool.get(model) - if isinstance(model_obj, osv.osv.osv_memory): - logger.notifyChannel('init', netsvc.LOG_WARNING, 'In-memory object %s (%s) should not have explicit access rules!' % (model, name)) - - cr.execute("SELECT model from ir_model") - for (model,) in cr.fetchall(): - obj = pool.get(model) - if obj: - obj._check_removed_columns(cr, log=True) - else: - logger.notifyChannel('init', netsvc.LOG_WARNING, "Model %s is referenced but not present in the orm pool!" % model) - - # Cleanup orphan records - pool.get('ir.model.data')._process_end(cr, 1, processed_modules) - - if report.get_report(): - logger.notifyChannel('init', netsvc.LOG_INFO, report) - - for kind in ('init', 'demo', 'update'): - tools.config[kind] = {} - - cr.commit() - if update_module: - cr.execute("select id,name from ir_module_module where state=%s", ('to remove',)) - for mod_id, mod_name in cr.fetchall(): - cr.execute('select model,res_id from ir_model_data where noupdate=%s and module=%s order by id desc', (False, mod_name,)) - for rmod, rid in cr.fetchall(): - uid = 1 - rmod_module= pool.get(rmod) - if rmod_module: - rmod_module.unlink(cr, uid, [rid]) - else: - logger.notifyChannel('init', netsvc.LOG_ERROR, 'Could not locate %s to remove res=%d' % (rmod,rid)) - cr.execute('delete from ir_model_data where noupdate=%s and module=%s', (False, mod_name,)) - cr.commit() - # - # TODO: remove menu without actions of children - # - while True: - cr.execute('''delete from - ir_ui_menu - where - (id not IN (select parent_id from ir_ui_menu where parent_id is not null)) - and - (id not IN (select res_id from ir_values where model='ir.ui.menu')) - and - (id not IN (select res_id from ir_model_data where model='ir.ui.menu'))''') - cr.commit() - if not cr.rowcount: - break - else: - logger.notifyChannel('init', netsvc.LOG_INFO, 'removed %d unused menus' % (cr.rowcount,)) - - cr.execute("update ir_module_module set state=%s where state=%s", ('uninstalled', 'to remove',)) - cr.commit() - finally: - cr.close() +""" +# get_module_path is used only by base_module_quality +from openerp.modules import get_module_resource, get_module_path # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/addons/base/__openerp__.py b/openerp/addons/base/__openerp__.py index 5fb2da9beb8..75e0a8c56d0 100644 --- a/openerp/addons/base/__openerp__.py +++ b/openerp/addons/base/__openerp__.py @@ -94,6 +94,8 @@ 'test/bug_lp541545.xml', 'test/test_osv_expression.yml', 'test/test_ir_rule.yml', # <-- These tests modify/add/delete ir_rules. + 'test/test_config_users.yml', + 'test/test_ir_values.yml', ], 'installable': True, 'active': True, diff --git a/openerp/addons/base/base.sql b/openerp/addons/base/base.sql index 802e71cfeb6..17378061b29 100644 --- a/openerp/addons/base/base.sql +++ b/openerp/addons/base/base.sql @@ -45,6 +45,7 @@ CREATE TABLE ir_model_fields ( view_load boolean, relate boolean default False, relation_field varchar(128), + translate boolean default False, primary key(id) ); diff --git a/openerp/addons/base/base_data.xml b/openerp/addons/base/base_data.xml index bc13dacd7ba..3f8208b8ec4 100644 --- a/openerp/addons/base/base_data.xml +++ b/openerp/addons/base/base_data.xml @@ -1618,29 +1618,44 @@ - - + XOF CFA 1 4 - + 655.957 - + + + + XAF + FCFA + 1 + 4 + + + + 655.957 + + + + + + UGX + USh + 1 + 4 + + + + 3401.91388 + + + + diff --git a/openerp/addons/base/i18n/cs.po b/openerp/addons/base/i18n/cs.po index fd4baec26d4..cf609d436ad 100644 --- a/openerp/addons/base/i18n/cs.po +++ b/openerp/addons/base/i18n/cs.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2010-06-06 04:19+0000\n" -"Last-Translator: Vladimír Burian \n" +"PO-Revision-Date: 2011-05-18 16:53+0000\n" +"Last-Translator: Jan B. Krejčí \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-01-12 04:46+0000\n" -"X-Generator: Launchpad (build Unknown)\n" +"X-Launchpad-Export-Date: 2011-05-19 06:22+0000\n" +"X-Generator: Launchpad (build 12959)\n" #. module: base #: view:ir.filters:0 @@ -23,22 +23,22 @@ msgstr "" #: field:ir.rule,domain_force:0 #: field:res.partner.title,domain:0 msgid "Domain" -msgstr "" +msgstr "Doména" #. module: base #: model:res.country,name:base.sh msgid "Saint Helena" -msgstr "" +msgstr "Svatá Helena" #. module: base #: view:ir.actions.report.xml:0 msgid "Other Configuration" -msgstr "" +msgstr "Ostatní nastavení" #. module: base #: selection:ir.property,type:0 msgid "DateTime" -msgstr "" +msgstr "Datum a čas" #. module: base #: code:addons/fields.py:534 @@ -58,12 +58,12 @@ msgstr "Metadata" #: field:ir.ui.view,arch:0 #: field:ir.ui.view.custom,arch:0 msgid "View Architecture" -msgstr "Architektura náhledu(View Architecture)" +msgstr "Architektura zobrazení" #. module: base #: field:base.language.import,code:0 msgid "Code (eg:en__US)" -msgstr "Kód (eg:en__US)" +msgstr "Kód (např. en_US)" #. module: base #: view:workflow:0 @@ -73,12 +73,12 @@ msgstr "Kód (eg:en__US)" #: field:workflow.transition,wkf_id:0 #: field:workflow.workitem,wkf_id:0 msgid "Workflow" -msgstr "Workflow(Workflow)" +msgstr "Pracovní postup" #. module: base #: view:partner.sms.send:0 msgid "SMS - Gateway: clickatell" -msgstr "Brána: clickatell(Gateway: clickatell)" +msgstr "SMS brána Clickatell" #. module: base #: selection:base.language.install,lang:0 diff --git a/openerp/addons/base/i18n/fr.po b/openerp/addons/base/i18n/fr.po index 3cacfd84c89..a97bbcbc5d5 100644 --- a/openerp/addons/base/i18n/fr.po +++ b/openerp/addons/base/i18n/fr.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2011-03-22 22:41+0000\n" -"Last-Translator: Pierre Burnier \n" +"PO-Revision-Date: 2011-05-16 16:57+0000\n" +"Last-Translator: lolivier \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-03-23 06:23+0000\n" -"X-Generator: Launchpad (build 12559)\n" +"X-Launchpad-Export-Date: 2011-05-17 06:04+0000\n" +"X-Generator: Launchpad (build 12959)\n" #. module: base #: view:ir.filters:0 @@ -8647,7 +8647,7 @@ msgstr "Danish / Dansk" #. module: base #: selection:ir.model.fields,select_level:0 msgid "Advanced Search (deprecated)" -msgstr "" +msgstr "Recherche avancée (obsolète)" #. module: base #: model:res.country,name:base.cx diff --git a/openerp/addons/base/i18n/hy.po b/openerp/addons/base/i18n/hy.po new file mode 100644 index 00000000000..b489e09734c --- /dev/null +++ b/openerp/addons/base/i18n/hy.po @@ -0,0 +1,9248 @@ +# Armenian translation for openobject-server +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openobject-server package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-server\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-01-11 11:14+0000\n" +"PO-Revision-Date: 2011-05-20 09:35+0000\n" +"Last-Translator: Serj Safarian \n" +"Language-Team: Armenian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-05-21 06:14+0000\n" +"X-Generator: Launchpad (build 12959)\n" + +#. module: base +#: view:ir.filters:0 +#: field:ir.model.fields,domain:0 +#: field:ir.rule,domain:0 +#: field:ir.rule,domain_force:0 +#: field:res.partner.title,domain:0 +msgid "Domain" +msgstr "" + +#. module: base +#: model:res.country,name:base.sh +msgid "Saint Helena" +msgstr "Սուրբ Հեղինե" + +#. module: base +#: view:ir.actions.report.xml:0 +msgid "Other Configuration" +msgstr "" + +#. module: base +#: selection:ir.property,type:0 +msgid "DateTime" +msgstr "" + +#. module: base +#: code:addons/fields.py:534 +#, python-format +msgid "" +"The second argument of the many2many field %s must be a SQL table !You used " +"%s, which is not a valid SQL table name." +msgstr "" + +#. module: base +#: view:ir.values:0 +#: field:ir.values,meta_unpickle:0 +msgid "Metadata" +msgstr "" + +#. module: base +#: field:ir.ui.view,arch:0 +#: field:ir.ui.view.custom,arch:0 +msgid "View Architecture" +msgstr "" + +#. module: base +#: field:base.language.import,code:0 +msgid "Code (eg:en__US)" +msgstr "" + +#. module: base +#: view:workflow:0 +#: view:workflow.activity:0 +#: field:workflow.activity,wkf_id:0 +#: field:workflow.instance,wkf_id:0 +#: field:workflow.transition,wkf_id:0 +#: field:workflow.workitem,wkf_id:0 +msgid "Workflow" +msgstr "" + +#. module: base +#: view:partner.sms.send:0 +msgid "SMS - Gateway: clickatell" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Hungarian / Magyar" +msgstr "" + +#. module: base +#: selection:ir.model.fields,select_level:0 +msgid "Not Searchable" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (VE) / Español (VE)" +msgstr "" + +#. module: base +#: field:ir.actions.server,wkf_model_id:0 +msgid "Workflow On" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,display_menu_tip:0 +msgid "Display Menu Tips" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Created Views" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:485 +#, python-format +msgid "" +"You can not write in this document (%s) ! Be sure your user belongs to one " +"of these groups: %s." +msgstr "" + +#. module: base +#: help:ir.model.fields,domain:0 +msgid "" +"The optional domain to restrict possible values for relationship fields, " +"specified as a Python expression defining a list of triplets. For example: " +"[('color','=','red')]" +msgstr "" + +#. module: base +#: field:res.partner,ref:0 +msgid "Reference" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,target:0 +msgid "Target Window" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:507 +#, python-format +msgid "Warning!" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:304 +#, python-format +msgid "" +"Properties of base fields cannot be altered in this manner! Please modify " +"them through Python code, preferably through a custom addon!" +msgstr "" + +#. module: base +#: code:addons/osv.py:133 +#, python-format +msgid "Constraint Error" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_ui_view_custom +msgid "ir.ui.view.custom" +msgstr "" + +#. module: base +#: model:res.country,name:base.sz +msgid "Swaziland" +msgstr "" + +#. module: base +#: code:addons/orm.py:1993 +#: code:addons/orm.py:3653 +#, python-format +msgid "created." +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_woodsuppliers0 +msgid "Wood Suppliers" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:303 +#, python-format +msgid "" +"Some installed modules depend on the module you plan to Uninstall :\n" +" %s" +msgstr "" + +#. module: base +#: field:ir.sequence,number_increment:0 +msgid "Increment Number" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_res_company_tree +#: model:ir.ui.menu,name:base.menu_action_res_company_tree +msgid "Company's Structure" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Inuktitut / ᐃᓄᒃᑎᑐᑦ" +msgstr "" + +#. module: base +#: view:res.partner:0 +msgid "Search Partner" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:132 +#, python-format +msgid "\"smtp_server\" needs to be set to send mails to users" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_export_language.py:60 +#, python-format +msgid "new" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,multi:0 +msgid "On multiple doc." +msgstr "" + +#. module: base +#: field:ir.module.category,module_nr:0 +msgid "Number of Modules" +msgstr "" + +#. module: base +#: help:multi_company.default,company_dest_id:0 +msgid "Company to store the current record" +msgstr "" + +#. module: base +#: field:res.partner.bank.type.field,size:0 +msgid "Max. Size" +msgstr "" + +#. module: base +#: field:res.partner.address,name:0 +msgid "Contact Name" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_export_language.py:56 +#, python-format +msgid "" +"Save this document to a %s file and edit it with a specific software or a " +"text editor. The file encoding is UTF-8." +msgstr "" + +#. module: base +#: sql_constraint:res.lang:0 +msgid "The name of the language must be unique !" +msgstr "" + +#. module: base +#: selection:res.request,state:0 +msgid "active" +msgstr "" + +#. module: base +#: field:ir.actions.wizard,wiz_name:0 +msgid "Wizard Name" +msgstr "" + +#. module: base +#: code:addons/orm.py:2160 +#, python-format +msgid "Invalid group_by" +msgstr "" + +#. module: base +#: field:res.partner,credit_limit:0 +msgid "Credit Limit" +msgstr "" + +#. module: base +#: field:ir.model.data,date_update:0 +msgid "Update Date" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +msgid "Owner" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,src_model:0 +msgid "Source Object" +msgstr "" + +#. module: base +#: view:ir.actions.todo:0 +msgid "Config Wizard Steps" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_ui_view_sc +msgid "ir.ui.view_sc" +msgstr "" + +#. module: base +#: field:res.widget.user,widget_id:0 +#: field:res.widget.wizard,widgets_list:0 +msgid "Widget" +msgstr "" + +#. module: base +#: view:ir.model.access:0 +#: field:ir.model.access,group_id:0 +#: view:res.config.users:0 +msgid "Group" +msgstr "" + +#. module: base +#: field:ir.exports.line,name:0 +#: field:ir.translation,name:0 +#: field:res.partner.bank.type.field,name:0 +msgid "Field Name" +msgstr "" + +#. module: base +#: wizard_view:server.action.create,init:0 +#: wizard_field:server.action.create,init,type:0 +msgid "Select Action Type" +msgstr "" + +#. module: base +#: model:res.country,name:base.tv +msgid "Tuvalu" +msgstr "" + +#. module: base +#: selection:ir.model,state:0 +msgid "Custom Object" +msgstr "" + +#. module: base +#: field:res.lang,date_format:0 +msgid "Date Format" +msgstr "" + +#. module: base +#: field:res.bank,email:0 +#: field:res.partner.address,email:0 +msgid "E-Mail" +msgstr "" + +#. module: base +#: model:res.country,name:base.an +msgid "Netherlands Antilles" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:389 +#, python-format +msgid "" +"You can not remove the admin user as it is used internally for resources " +"created by OpenERP (updates, module installation, ...)" +msgstr "" + +#. module: base +#: model:res.country,name:base.gf +msgid "French Guyana" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Greek / Ελληνικά" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Bosnian / bosanski jezik" +msgstr "" + +#. module: base +#: help:ir.actions.report.xml,attachment_use:0 +msgid "" +"If you check this, then the second time the user prints with same attachment " +"name, it returns the previous report." +msgstr "" + +#. module: base +#: code:addons/orm.py:904 +#, python-format +msgid "The read method is not implemented on this object !" +msgstr "" + +#. module: base +#: help:res.lang,iso_code:0 +msgid "This ISO code is the name of po files to use for translations" +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +msgid "Your system will be updated." +msgstr "" + +#. module: base +#: field:ir.actions.todo,note:0 +#: selection:ir.property,type:0 +msgid "Text" +msgstr "" + +#. module: base +#: field:res.country,name:0 +msgid "Country Name" +msgstr "" + +#. module: base +#: model:res.country,name:base.co +msgid "Colombia" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Schedule Upgrade" +msgstr "" + +#. module: base +#: code:addons/orm.py:838 +#, python-format +msgid "Key/value '%s' not found in selection field '%s'" +msgstr "" + +#. module: base +#: help:res.country,code:0 +msgid "" +"The ISO country code in two chars.\n" +"You can use this field for quick search." +msgstr "" + +#. module: base +#: model:res.country,name:base.pw +msgid "Palau" +msgstr "" + +#. module: base +#: view:res.partner:0 +msgid "Sales & Purchases" +msgstr "" + +#. module: base +#: view:ir.translation:0 +msgid "Untranslated" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,context:0 +msgid "" +"Context dictionary as Python expression, empty by default (Default: {})" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_action_wizard +#: view:ir.actions.wizard:0 +#: model:ir.ui.menu,name:base.menu_ir_action_wizard +msgid "Wizards" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_miscellaneoussuppliers0 +msgid "Miscellaneous Suppliers" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:255 +#, python-format +msgid "Custom fields must have a name that starts with 'x_' !" +msgstr "" + +#. module: base +#: help:ir.actions.server,action_id:0 +msgid "Select the Action Window, Report, Wizard to be executed." +msgstr "" + +#. module: base +#: view:res.config.users:0 +msgid "New User" +msgstr "" + +#. module: base +#: view:base.language.export:0 +msgid "Export done" +msgstr "" + +#. module: base +#: view:ir.model:0 +msgid "Model Description" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,src_model:0 +msgid "" +"Optional model name of the objects on which this action should be visible" +msgstr "" + +#. module: base +#: field:workflow.transition,trigger_expr_id:0 +msgid "Trigger Expression" +msgstr "" + +#. module: base +#: model:res.country,name:base.jo +msgid "Jordan" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Certified" +msgstr "" + +#. module: base +#: model:res.country,name:base.er +msgid "Eritrea" +msgstr "" + +#. module: base +#: view:res.config:0 +#: view:res.config.installer:0 +msgid "description" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_base_action_rule +msgid "Automated Actions" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_actions +msgid "ir.actions.actions" +msgstr "" + +#. module: base +#: view:partner.wizard.ean.check:0 +msgid "Want to check Ean ? " +msgstr "" + +#. module: base +#: field:ir.values,key2:0 +msgid "Event Type" +msgstr "" + +#. module: base +#: view:base.language.export:0 +msgid "" +"OpenERP translations (core, modules, clients) are managed through " +"Launchpad.net, our open source project management facility. We use their " +"online interface to synchronize all translations efforts." +msgstr "" + +#. module: base +#: field:res.partner,title:0 +msgid "Partner Form" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Swedish / svenska" +msgstr "" + +#. module: base +#: model:res.country,name:base.rs +msgid "Serbia" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "Wizard View" +msgstr "" + +#. module: base +#: model:res.country,name:base.kh +msgid "Cambodia, Kingdom of" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_sequence_form +#: view:ir.sequence:0 +#: model:ir.ui.menu,name:base.menu_ir_sequence_form +#: model:ir.ui.menu,name:base.next_id_5 +msgid "Sequences" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_base_language_import +msgid "Language Import" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_config_users +msgid "res.config.users" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Albanian / Shqip" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_crm_config_opportunity +msgid "Opportunities" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_base_language_export +msgid "base.language.export" +msgstr "" + +#. module: base +#: model:res.country,name:base.pg +msgid "Papua New Guinea" +msgstr "" + +#. module: base +#: help:ir.actions.report.xml,report_type:0 +msgid "Report Type, e.g. pdf, html, raw, sxw, odt, html2html, mako2html, ..." +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_4 +msgid "Basic Partner" +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "," +msgstr "" + +#. module: base +#: view:res.partner:0 +msgid "My Partners" +msgstr "" + +#. module: base +#: view:ir.actions.report.xml:0 +msgid "XML Report" +msgstr "" + +#. module: base +#: model:res.country,name:base.es +msgid "Spain" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_translation_export +msgid "Import / Export" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,domain:0 +msgid "" +"Optional domain filtering of the destination data, as a Python expression" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_view_base_module_upgrade +#: model:ir.model,name:base.model_base_module_upgrade +msgid "Module Upgrade" +msgstr "" + +#. module: base +#: view:res.config.users:0 +msgid "" +"Groups are used to define access rights on objects and the visibility of " +"screens and menus" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (UY) / Español (UY)" +msgstr "" + +#. module: base +#: field:res.partner,mobile:0 +#: field:res.partner.address,mobile:0 +msgid "Mobile" +msgstr "" + +#. module: base +#: model:res.country,name:base.om +msgid "Oman" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_payterm_form +#: model:ir.model,name:base.model_res_payterm +msgid "Payment term" +msgstr "" + +#. module: base +#: model:res.country,name:base.nu +msgid "Niue" +msgstr "" + +#. module: base +#: selection:ir.cron,interval_type:0 +msgid "Work Days" +msgstr "" + +#. module: base +#: selection:ir.module.module,license:0 +msgid "Other OSI Approved Licence" +msgstr "" + +#. module: base +#: help:res.config.users,context_lang:0 +#: help:res.users,context_lang:0 +msgid "" +"Sets the language for the user's user interface, when UI translations are " +"available" +msgstr "" + +#. module: base +#: code:addons/orm.py:1043 +#, python-format +msgid "The unlink method is not implemented on this object !" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.act_menu_create +#: view:wizard.ir.model.menu.create:0 +msgid "Create Menu" +msgstr "" + +#. module: base +#: model:res.country,name:base.in +msgid "India" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.res_request_link-act +#: model:ir.ui.menu,name:base.menu_res_request_link_act +msgid "Request Reference Types" +msgstr "" + +#. module: base +#: view:ir.values:0 +msgid "client_action_multi, client_action_relate" +msgstr "" + +#. module: base +#: model:res.country,name:base.ad +msgid "Andorra, Principality of" +msgstr "" + +#. module: base +#: field:ir.module.category,child_ids:0 +#: field:res.partner.category,child_ids:0 +msgid "Child Categories" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_config_parameter +msgid "ir.config_parameter" +msgstr "" + +#. module: base +#: selection:base.language.export,format:0 +msgid "TGZ Archive" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%B - Full month name." +msgstr "" + +#. module: base +#: view:ir.attachment:0 +#: field:ir.attachment,type:0 +#: field:ir.model,state:0 +#: field:ir.model.fields,state:0 +#: field:ir.property,type:0 +#: field:ir.server.object.lines,type:0 +#: field:ir.translation,type:0 +#: view:ir.ui.view:0 +#: view:ir.values:0 +#: field:ir.values,key:0 +#: view:res.partner:0 +#: view:res.partner.address:0 +msgid "Type" +msgstr "" + +#. module: base +#: code:addons/orm.py:210 +#, python-format +msgid "" +"Language with code \"%s\" is not defined in your system !\n" +"Define it through the Administration menu." +msgstr "" + +#. module: base +#: model:res.country,name:base.gu +msgid "Guam (USA)" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_hr_project +msgid "Human Resources Dashboard" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:507 +#, python-format +msgid "Setting empty passwords is not allowed for security reasons!" +msgstr "" + +#. module: base +#: selection:ir.actions.server,state:0 +#: selection:workflow.activity,kind:0 +msgid "Dummy" +msgstr "" + +#. module: base +#: constraint:ir.ui.view:0 +msgid "Invalid XML for View Architecture!" +msgstr "" + +#. module: base +#: model:res.country,name:base.ky +msgid "Cayman Islands" +msgstr "" + +#. module: base +#: model:res.country,name:base.kr +msgid "South Korea" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_workflow_transition_form +#: model:ir.ui.menu,name:base.menu_workflow_transition +#: view:workflow.activity:0 +msgid "Transitions" +msgstr "" + +#. module: base +#: code:addons/orm.py:4020 +#, python-format +msgid "Record #%d of %s not found, cannot copy!" +msgstr "" + +#. module: base +#: field:ir.module.module,contributors:0 +msgid "Contributors" +msgstr "" + +#. module: base +#: selection:ir.property,type:0 +msgid "Char" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_publisher_warranty_contract_form +#: model:ir.ui.menu,name:base.menu_publisher_warranty_contract +msgid "Contracts" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (AR) / Español (AR)" +msgstr "" + +#. module: base +#: model:res.country,name:base.ug +msgid "Uganda" +msgstr "" + +#. module: base +#: field:ir.model.access,perm_unlink:0 +msgid "Delete Access" +msgstr "" + +#. module: base +#: model:res.country,name:base.ne +msgid "Niger" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Chinese (HK)" +msgstr "" + +#. module: base +#: model:res.country,name:base.ba +msgid "Bosnia-Herzegovina" +msgstr "" + +#. module: base +#: view:base.language.export:0 +msgid "" +"To improve or expand the official translations, you should use directly " +"Lauchpad's web interface (Rosetta). If you need to perform mass translation, " +"Launchpad also allows uploading full .po files at once" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (GT) / Español (GT)" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "" +"%W - Week number of the year (Monday as the first day of the week) as a " +"decimal number [00,53]. All days in a new year preceding the first Monday " +"are considered to be in week 0." +msgstr "" + +#. module: base +#: field:ir.module.module,website:0 +#: field:res.partner,website:0 +msgid "Website" +msgstr "" + +#. module: base +#: model:res.country,name:base.gs +msgid "S. Georgia & S. Sandwich Isls." +msgstr "" + +#. module: base +#: field:ir.actions.url,url:0 +msgid "Action URL" +msgstr "" + +#. module: base +#: field:base.module.import,module_name:0 +msgid "Module Name" +msgstr "" + +#. module: base +#: model:res.country,name:base.mh +msgid "Marshall Islands" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:328 +#, python-format +msgid "Changing the model of a field is forbidden!" +msgstr "" + +#. module: base +#: model:res.country,name:base.ht +msgid "Haiti" +msgstr "" + +#. module: base +#: view:ir.ui.view:0 +#: selection:ir.ui.view,type:0 +msgid "Search" +msgstr "" + +#. module: base +#: code:addons/osv.py:136 +#, python-format +msgid "" +"The operation cannot be completed, probably due to the following:\n" +"- deletion: you may be trying to delete a record while other records still " +"reference it\n" +"- creation/update: a mandatory field is not correctly set" +msgstr "" + +#. module: base +#: view:ir.rule:0 +msgid "" +"2. Group-specific rules are combined together with a logical AND operator" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:206 +#, python-format +msgid "Operation Canceled" +msgstr "" + +#. module: base +#: help:base.language.export,lang:0 +msgid "To export a new language, do not select a language." +msgstr "" + +#. module: base +#: view:res.request:0 +msgid "Request Date" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_hr_dasboard +msgid "Dashboard" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_purchase_root +msgid "Purchases" +msgstr "" + +#. module: base +#: model:res.country,name:base.md +msgid "Moldavia" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Features" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +#: report:ir.module.reference.graph:0 +msgid "Version" +msgstr "" + +#. module: base +#: view:ir.model.access:0 +#: field:ir.model.access,perm_read:0 +#: view:ir.rule:0 +msgid "Read Access" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_exports +msgid "ir.exports" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_update_translations.py:38 +#, python-format +msgid "No language with code \"%s\" exists" +msgstr "" + +#. module: base +#: code:addons/base/publisher_warranty/publisher_warranty.py:163 +#, python-format +msgid "Error during communication with the publisher warranty server." +msgstr "" + +#. module: base +#: help:ir.actions.server,email:0 +msgid "" +"Provides the fields that will be used to fetch the email address, e.g. when " +"you select the invoice, then `object.invoice_address_id.email` is the field " +"which gives the correct address" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%Y - Year with century." +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "-" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract.wizard:0 +msgid "" +"This wizard helps you register a publisher warranty contract in your OpenERP " +"system. After the contract has been registered, you will be able to send " +"issues directly to OpenERP." +msgstr "" + +#. module: base +#: code:addons/orm.py:1744 +#, python-format +msgid "The search method is not implemented on this object !" +msgstr "" + +#. module: base +#: view:wizard.ir.model.menu.create:0 +msgid "Create _Menu" +msgstr "" + +#. module: base +#: field:res.payterm,name:0 +msgid "Payment Term (short name)" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_bank +#: view:res.bank:0 +#: field:res.partner.bank,bank:0 +msgid "Bank" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_exports_line +msgid "ir.exports.line" +msgstr "" + +#. module: base +#: help:base.language.install,overwrite:0 +msgid "" +"If you check this box, your customized translations will be overwritten and " +"replaced by the official ones." +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,report_rml:0 +msgid "Main report file path" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_action_report_xml +#: field:ir.module.module,reports_by_module:0 +#: model:ir.ui.menu,name:base.menu_ir_action_report_xml +msgid "Reports" +msgstr "" + +#. module: base +#: help:ir.actions.act_window.view,multi:0 +#: help:ir.actions.report.xml,multi:0 +msgid "" +"If set to true, the action will not be displayed on the right toolbar of a " +"form view." +msgstr "" + +#. module: base +#: field:workflow,on_create:0 +msgid "On Create" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:607 +#, python-format +msgid "" +"'%s' contains too many dots. XML ids should not contain dots ! These are " +"used to refer to other modules data, as in module.reference_id" +msgstr "" + +#. module: base +#: field:partner.sms.send,user:0 +#: field:res.config.users,login:0 +#: field:res.users,login:0 +msgid "Login" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "" +"Access all the fields related to the current object using expressions, i.e. " +"object.partner_id.name " +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_country_state +msgid "Country state" +msgstr "" + +#. module: base +#: selection:ir.property,type:0 +msgid "Float" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_request_link +msgid "res.request.link" +msgstr "" + +#. module: base +#: field:ir.actions.wizard,name:0 +msgid "Wizard Info" +msgstr "" + +#. module: base +#: view:base.language.export:0 +#: model:ir.actions.act_window,name:base.action_wizard_lang_export +#: model:ir.ui.menu,name:base.menu_wizard_lang_export +msgid "Export Translation" +msgstr "" + +#. module: base +#: help:res.log,secondary:0 +msgid "" +"Do not display this log if it belongs to the same object the user is working " +"on" +msgstr "" + +#. module: base +#: model:res.country,name:base.tp +msgid "East Timor" +msgstr "" + +#. module: base +#: model:res.company,follow_up_msg:base.main_company +msgid "" +"Date : %(date)s\n" +"\n" +"Dear %(partner_name)s,\n" +"\n" +"Please find in attachment a reminder of all your unpaid invoices, for a " +"total amount due of:\n" +"\n" +"%(followup_amount).2f %(company_currency)s\n" +"\n" +"Thanks,\n" +"--\n" +"%(user_signature)s\n" +"%(company_name)s" +msgstr "" + +#. module: base +#: field:res.currency,accuracy:0 +msgid "Computational Accuracy" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Sinhalese / සිංහල" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_wizard_ir_model_menu_create_line +msgid "wizard.ir.model.menu.create.line" +msgstr "" + +#. module: base +#: field:ir.attachment,res_id:0 +msgid "Attached ID" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Day: %(day)s" +msgstr "" + +#. module: base +#: model:res.country,name:base.mv +msgid "Maldives" +msgstr "" + +#. module: base +#: help:ir.values,res_id:0 +msgid "Keep 0 if the action must appear on all resources." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_rule +msgid "ir.rule" +msgstr "" + +#. module: base +#: selection:ir.cron,interval_type:0 +msgid "Days" +msgstr "" + +#. module: base +#: help:ir.actions.server,condition:0 +msgid "" +"Condition that is to be tested before action is executed, e.g. " +"object.list_price > object.cost_price" +msgstr "" + +#. module: base +#: code:addons/base/res/partner/partner.py:155 +#: code:addons/base/res/res_company.py:66 +#, python-format +msgid " (copy)" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "7. %H:%M:%S ==> 18:25:20" +msgstr "" + +#. module: base +#: view:res.partner:0 +#: view:res.partner.category:0 +#: field:res.partner.category,partner_ids:0 +msgid "Partners" +msgstr "" + +#. module: base +#: field:res.partner.category,parent_left:0 +msgid "Left parent" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.res_widget_act_window +#: model:ir.ui.menu,name:base.menu_res_widget_act_window +msgid "Homepage Widgets" +msgstr "" + +#. module: base +#: help:ir.actions.server,message:0 +msgid "" +"Specify the message. You can use the fields from the object. e.g. `Dear [[ " +"object.partner_id.name ]]`" +msgstr "" + +#. module: base +#: field:ir.attachment,res_model:0 +msgid "Attached Model" +msgstr "" + +#. module: base +#: view:ir.rule:0 +msgid "Domain Setup" +msgstr "" + +#. module: base +#: field:ir.actions.server,trigger_name:0 +msgid "Trigger Name" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base +#: field:ir.cron,priority:0 +#: field:res.request,priority:0 +#: field:res.request.link,priority:0 +msgid "Priority" +msgstr "" + +#. module: base +#: field:workflow.transition,act_from:0 +msgid "Source Activity" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Legend (for prefix, suffix)" +msgstr "" + +#. module: base +#: selection:ir.server.object.lines,type:0 +msgid "Formula" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:389 +#, python-format +msgid "Can not remove root user!" +msgstr "" + +#. module: base +#: model:res.country,name:base.mw +msgid "Malawi" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:51 +#: code:addons/base/res/res_user.py:413 +#, python-format +msgid "%s (copy)" +msgstr "" + +#. module: base +#: field:res.partner.address,type:0 +msgid "Address Type" +msgstr "" + +#. module: base +#: view:ir.ui.menu:0 +msgid "Full Path" +msgstr "" + +#. module: base +#: view:res.request:0 +msgid "References" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "" +"%U - Week number of the year (Sunday as the first day of the week) as a " +"decimal number [00,53]. All days in a new year preceding the first Sunday " +"are considered to be in week 0." +msgstr "" + +#. module: base +#: view:ir.ui.view:0 +msgid "Advanced" +msgstr "" + +#. module: base +#: model:res.country,name:base.fi +msgid "Finland" +msgstr "" + +#. module: base +#: selection:ir.actions.act_window,view_type:0 +#: selection:ir.actions.act_window.view,view_mode:0 +#: view:ir.ui.view:0 +#: selection:ir.ui.view,type:0 +#: selection:wizard.ir.model.menu.create.line,view_type:0 +msgid "Tree" +msgstr "" + +#. module: base +#: help:res.config.users,password:0 +msgid "" +"Keep empty if you don't want the user to be able to connect on the system." +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Create / Write / Copy" +msgstr "" + +#. module: base +#: view:base.language.export:0 +msgid "https://help.launchpad.net/Translations" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,view_mode:0 +msgid "View Mode" +msgstr "" + +#. module: base +#: view:base.language.import:0 +msgid "" +"When using CSV format, please also check that the first line of your file is " +"one of the following:" +msgstr "" + +#. module: base +#: code:addons/fields.py:114 +#, python-format +msgid "Not implemented search_memory method !" +msgstr "" + +#. module: base +#: view:res.log:0 +msgid "Logs" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish / Español" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Korean (KP) / 한국어 (KP)" +msgstr "" + +#. module: base +#: view:base.module.update:0 +msgid "" +"This wizard will scan all module repositories on the server side to detect " +"newly added modules as well as any change to existing modules." +msgstr "" + +#. module: base +#: field:res.company,logo:0 +msgid "Logo" +msgstr "" + +#. module: base +#: view:res.partner.address:0 +msgid "Search Contact" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Uninstall (beta)" +msgstr "" + +#. module: base +#: selection:ir.actions.act_window,target:0 +#: selection:ir.actions.url,target:0 +msgid "New Window" +msgstr "" + +#. module: base +#: model:res.country,name:base.bs +msgid "Bahamas" +msgstr "" + +#. module: base +#: code:addons/base/res/partner/partner.py:250 +#, python-format +msgid "" +"Couldn't generate the next id because some partners have an alphabetic id !" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +msgid "Attachment" +msgstr "" + +#. module: base +#: model:res.country,name:base.ie +msgid "Ireland" +msgstr "" + +#. module: base +#: field:base.module.update,update:0 +msgid "Number of modules updated" +msgstr "" + +#. module: base +#: code:addons/fields.py:100 +#, python-format +msgid "Not implemented set_memory method !" +msgstr "" + +#. module: base +#: view:workflow.activity:0 +msgid "Workflow Activity" +msgstr "" + +#. module: base +#: view:ir.rule:0 +msgid "" +"Example: GLOBAL_RULE_1 AND GLOBAL_RULE_2 AND ( (GROUP_A_RULE_1 AND " +"GROUP_A_RULE_2) OR (GROUP_B_RULE_1 AND GROUP_B_RULE_2) )" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_ui_view +msgid "" +"Views allows you to personalize each view of OpenERP. You can add new " +"fields, move fields, rename them or delete the ones that you do not need." +msgstr "" + +#. module: base +#: field:ir.actions.act_window,groups_id:0 +#: model:ir.actions.act_window,name:base.action_res_groups +#: view:ir.actions.report.xml:0 +#: field:ir.actions.report.xml,groups_id:0 +#: view:ir.actions.todo:0 +#: field:ir.actions.todo,groups_id:0 +#: field:ir.actions.wizard,groups_id:0 +#: view:ir.model:0 +#: field:ir.model.fields,groups:0 +#: field:ir.rule,groups:0 +#: view:ir.ui.menu:0 +#: field:ir.ui.menu,groups_id:0 +#: model:ir.ui.menu,name:base.menu_action_res_groups +#: field:res.config.users,groups_id:0 +#: view:res.groups:0 +#: view:res.users:0 +#: field:res.users,groups_id:0 +msgid "Groups" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (CL) / Español (CL)" +msgstr "" + +#. module: base +#: view:res.config.users:0 +msgid "" +"Create additional users and assign them groups that will allow them to have " +"access to selected functionalities within the system. Click on 'Done' if you " +"do not wish to add more users at this stage, you can always do this later." +msgstr "" + +#. module: base +#: model:res.country,name:base.bz +msgid "Belize" +msgstr "" + +#. module: base +#: model:res.country,name:base.ge +msgid "Georgia" +msgstr "" + +#. module: base +#: model:res.country,name:base.pl +msgid "Poland" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,view_mode:0 +msgid "" +"Comma-separated list of allowed view modes, such as 'form', 'tree', " +"'calendar', etc. (Default: tree,form)" +msgstr "" + +#. module: base +#: code:addons/orm.py:3147 +#, python-format +msgid "A document was modified since you last viewed it (%s:%d)" +msgstr "" + +#. module: base +#: view:workflow:0 +msgid "Workflow Editor" +msgstr "" + +#. module: base +#: selection:ir.module.module,state:0 +#: selection:ir.module.module.dependency,state:0 +msgid "To be removed" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_sequence +msgid "ir.sequence" +msgstr "" + +#. module: base +#: help:ir.actions.server,expression:0 +msgid "" +"Enter the field/expression that will return the list. E.g. select the sale " +"order in Object, and you can have loop on the sales order line. Expression = " +"`object.order_line`." +msgstr "" + +#. module: base +#: field:ir.property,fields_id:0 +#: selection:ir.translation,type:0 +#: field:multi_company.default,field_id:0 +msgid "Field" +msgstr "" + +#. module: base +#: view:ir.rule:0 +msgid "Groups (no group = global)" +msgstr "" + +#. module: base +#: model:res.country,name:base.fo +msgid "Faroe Islands" +msgstr "" + +#. module: base +#: selection:res.config.users,view:0 +#: selection:res.config.view,view:0 +#: selection:res.users,view:0 +msgid "Simplified" +msgstr "" + +#. module: base +#: model:res.country,name:base.st +msgid "Saint Tome (Sao Tome) and Principe" +msgstr "" + +#. module: base +#: selection:res.partner.address,type:0 +msgid "Invoice" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Portugese (BR) / Português (BR)" +msgstr "" + +#. module: base +#: model:res.country,name:base.bb +msgid "Barbados" +msgstr "" + +#. module: base +#: model:res.country,name:base.mg +msgid "Madagascar" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:96 +#, python-format +msgid "" +"The Object name must start with x_ and not contain any special character !" +msgstr "" + +#. module: base +#: field:ir.actions.configuration.wizard,note:0 +msgid "Next Wizard" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_menu_admin +#: view:ir.ui.menu:0 +#: field:ir.ui.menu,name:0 +msgid "Menu" +msgstr "" + +#. module: base +#: field:res.currency,rate:0 +msgid "Current Rate" +msgstr "" + +#. module: base +#: field:ir.ui.view.custom,ref_id:0 +msgid "Original View" +msgstr "" + +#. module: base +#: view:ir.values:0 +msgid "Action To Launch" +msgstr "" + +#. module: base +#: field:ir.actions.url,target:0 +msgid "Action Target" +msgstr "" + +#. module: base +#: model:res.country,name:base.ai +msgid "Anguilla" +msgstr "" + +#. module: base +#: field:ir.ui.view_sc,name:0 +msgid "Shortcut Name" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,limit:0 +msgid "Default limit for the list view" +msgstr "" + +#. module: base +#: help:ir.actions.server,write_id:0 +msgid "" +"Provide the field name that the record id refers to for the write operation. " +"If it is empty it will refer to the active id of the object." +msgstr "" + +#. module: base +#: model:res.country,name:base.zw +msgid "Zimbabwe" +msgstr "" + +#. module: base +#: view:base.module.update:0 +msgid "Please be patient, as this operation may take a few seconds..." +msgstr "" + +#. module: base +#: help:ir.values,action_id:0 +msgid "This field is not used, it only helps you to select the right action." +msgstr "" + +#. module: base +#: field:ir.actions.server,email:0 +msgid "Email Address" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "French (BE) / Français (BE)" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +#: field:workflow.activity,action_id:0 +msgid "Server Action" +msgstr "" + +#. module: base +#: model:res.country,name:base.tt +msgid "Trinidad and Tobago" +msgstr "" + +#. module: base +#: model:res.country,name:base.lv +msgid "Latvia" +msgstr "" + +#. module: base +#: view:ir.values:0 +msgid "Values" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Field Mappings" +msgstr "" + +#. module: base +#: view:base.language.export:0 +msgid "Export Translations" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_custom +msgid "Customization" +msgstr "" + +#. module: base +#: model:res.country,name:base.py +msgid "Paraguay" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_act_window_close +msgid "ir.actions.act_window_close" +msgstr "" + +#. module: base +#: field:ir.server.object.lines,col1:0 +msgid "Destination" +msgstr "" + +#. module: base +#: model:res.country,name:base.lt +msgid "Lithuania" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_view_partner_clear_ids +#: model:ir.model,name:base.model_partner_clear_ids +#: view:partner.clear.ids:0 +msgid "Clear IDs" +msgstr "" + +#. module: base +#: help:ir.cron,model:0 +msgid "" +"Name of object whose function will be called when this scheduler will run. " +"e.g. 'res.partener'" +msgstr "" + +#. module: base +#: code:addons/orm.py:1040 +#, python-format +msgid "The perm_read method is not implemented on this object !" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%y - Year without century [00,99]." +msgstr "" + +#. module: base +#: model:res.country,name:base.si +msgid "Slovenia" +msgstr "" + +#. module: base +#: model:res.country,name:base.pk +msgid "Pakistan" +msgstr "" + +#. module: base +#: code:addons/orm.py:1350 +#, python-format +msgid "Invalid Object Architecture!" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_email_gateway_form +msgid "Messages" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:303 +#: code:addons/base/ir/ir_model.py:317 +#: code:addons/base/ir/ir_model.py:319 +#: code:addons/base/ir/ir_model.py:321 +#: code:addons/base/ir/ir_model.py:328 +#: code:addons/base/ir/ir_model.py:331 +#: code:addons/base/module/wizard/base_update_translations.py:38 +#, python-format +msgid "Error!" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%p - Equivalent of either AM or PM." +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Iteration Actions" +msgstr "" + +#. module: base +#: help:multi_company.default,company_id:0 +msgid "Company where the user is connected" +msgstr "" + +#. module: base +#: field:publisher_warranty.contract,date_stop:0 +msgid "Ending Date" +msgstr "" + +#. module: base +#: model:res.country,name:base.nz +msgid "New Zealand" +msgstr "" + +#. module: base +#: code:addons/orm.py:3366 +#, python-format +msgid "" +"One of the records you are trying to modify has already been deleted " +"(Document type: %s)." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_country +msgid "" +"Display and manage the list of all countries that can be assigned to your " +"partner records. You can create or delete countries to make sure the ones " +"you are working on will be maintained." +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_7 +msgid "Openstuff.net" +msgstr "" + +#. module: base +#: model:res.country,name:base.nf +msgid "Norfolk Island" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Korean (KR) / 한국어 (KR)" +msgstr "" + +#. module: base +#: help:ir.model.fields,model:0 +msgid "The technical name of the model this field belongs to" +msgstr "" + +#. module: base +#: field:ir.actions.server,action_id:0 +#: selection:ir.actions.server,state:0 +msgid "Client Action" +msgstr "" + +#. module: base +#: model:res.country,name:base.bd +msgid "Bangladesh" +msgstr "" + +#. module: base +#: constraint:res.company:0 +msgid "Error! You can not create recursive companies." +msgstr "" + +#. module: base +#: selection:publisher_warranty.contract,state:0 +msgid "Valid" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "XSL" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:322 +#, python-format +msgid "Can not upgrade module '%s'. It is not installed." +msgstr "" + +#. module: base +#: model:res.country,name:base.cu +msgid "Cuba" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_partner_event +msgid "res.partner.event" +msgstr "" + +#. module: base +#: model:res.widget,title:base.facebook_widget +msgid "Facebook" +msgstr "" + +#. module: base +#: model:res.country,name:base.am +msgid "Armenia" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_property_form +#: model:ir.ui.menu,name:base.menu_ir_property_form_all +msgid "Configuration Parameters" +msgstr "" + +#. module: base +#: constraint:ir.cron:0 +msgid "Invalid arguments" +msgstr "" + +#. module: base +#: model:res.country,name:base.se +msgid "Sweden" +msgstr "" + +#. module: base +#: selection:ir.actions.act_window.view,view_mode:0 +#: selection:ir.ui.view,type:0 +#: selection:wizard.ir.model.menu.create.line,view_type:0 +msgid "Gantt" +msgstr "" + +#. module: base +#: view:ir.property:0 +msgid "Property" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_partner_bank_type +#: view:res.partner.bank.type:0 +msgid "Bank Account Type" +msgstr "" + +#. module: base +#: field:base.language.export,config_logo:0 +#: field:base.language.import,config_logo:0 +#: field:base.language.install,config_logo:0 +#: field:base.module.import,config_logo:0 +#: field:base.module.update,config_logo:0 +#: field:base.update.translations,config_logo:0 +#: field:ir.actions.configuration.wizard,config_logo:0 +#: field:ir.wizard.screen,config_logo:0 +#: field:publisher_warranty.contract.wizard,config_logo:0 +#: field:res.config,config_logo:0 +#: field:res.config.installer,config_logo:0 +#: field:res.config.users,config_logo:0 +#: field:res.config.view,config_logo:0 +msgid "Image" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Iteration Action Configuration" +msgstr "" + +#. module: base +#: selection:publisher_warranty.contract,state:0 +msgid "Canceled" +msgstr "" + +#. module: base +#: model:res.country,name:base.at +msgid "Austria" +msgstr "" + +#. module: base +#: selection:base.language.install,state:0 +#: selection:base.module.import,state:0 +#: selection:base.module.update,state:0 +msgid "done" +msgstr "" + +#. module: base +#: selection:ir.actions.act_window.view,view_mode:0 +#: model:ir.ui.menu,name:base.menu_calendar_configuration +#: selection:ir.ui.view,type:0 +#: selection:wizard.ir.model.menu.create.line,view_type:0 +msgid "Calendar" +msgstr "" + +#. module: base +#: field:res.partner.address,partner_id:0 +msgid "Partner Name" +msgstr "" + +#. module: base +#: field:workflow.activity,signal_send:0 +msgid "Signal (subflow.*)" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_17 +msgid "HR sector" +msgstr "" + +#. module: base +#: code:addons/orm.py:3817 +#, python-format +msgid "" +"Invalid \"order\" specified. A valid \"order\" specification is a comma-" +"separated list of valid field names (optionally followed by asc/desc for the " +"direction)" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_module_module_dependency +msgid "Module dependency" +msgstr "" + +#. module: base +#: selection:publisher_warranty.contract.wizard,state:0 +msgid "Draft" +msgstr "" + +#. module: base +#: selection:res.config.users,view:0 +#: selection:res.config.view,view:0 +#: selection:res.users,view:0 +msgid "Extended" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_partner_title_contact +msgid "" +"Manage the contact titles you want to have available in your system and the " +"way you want to print them in letters and other documents. Some example: " +"Mr., Mrs. " +msgstr "" + +#. module: base +#: field:res.company,rml_footer1:0 +msgid "Report Footer 1" +msgstr "" + +#. module: base +#: field:res.company,rml_footer2:0 +msgid "Report Footer 2" +msgstr "" + +#. module: base +#: view:ir.model.access:0 +#: view:res.groups:0 +#: field:res.groups,model_access:0 +msgid "Access Controls" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +#: field:ir.module.module,dependencies_id:0 +msgid "Dependencies" +msgstr "" + +#. module: base +#: field:multi_company.default,company_id:0 +msgid "Main Company" +msgstr "" + +#. module: base +#: field:ir.ui.menu,web_icon_hover:0 +msgid "Web Icon File (hover)" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "" +"If you use a formula type, use a python expression using the variable " +"'object'." +msgstr "" + +#. module: base +#: field:res.partner.address,birthdate:0 +msgid "Birthdate" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_title_contact +#: model:ir.ui.menu,name:base.menu_partner_title_contact +msgid "Contact Titles" +msgstr "" + +#. module: base +#: view:base.language.import:0 +msgid "" +"Please double-check that the file encoding is set to UTF-8 (sometimes called " +"Unicode) when the translator exports it." +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (DO) / Español (DO)" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_workflow_activity +msgid "workflow.activity" +msgstr "" + +#. module: base +#: help:ir.ui.view_sc,res_id:0 +msgid "" +"Reference of the target resource, whose model/table depends on the 'Resource " +"Name' field." +msgstr "" + +#. module: base +#: field:ir.model.fields,select_level:0 +msgid "Searchable" +msgstr "" + +#. module: base +#: model:res.country,name:base.uy +msgid "Uruguay" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Finnish / Suomi" +msgstr "" + +#. module: base +#: field:ir.rule,perm_write:0 +msgid "Apply For Write" +msgstr "" + +#. module: base +#: field:ir.sequence,prefix:0 +msgid "Prefix" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "German / Deutsch" +msgstr "" + +#. module: base +#: help:ir.actions.server,trigger_name:0 +msgid "Select the Signal name that is to be used as the trigger." +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Fields Mapping" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Portugese / Português" +msgstr "" + +#. module: base +#: model:res.partner.title,name:base.res_partner_title_sir +msgid "Sir" +msgstr "" + +#. module: base +#: code:addons/orm.py:1622 +#, python-format +msgid "There is no view of type '%s' defined for the structure!" +msgstr "" + +#. module: base +#: field:ir.default,ref_id:0 +msgid "ID Ref." +msgstr "" + +#. module: base +#: model:ir.actions.server,name:base.action_start_configurator +#: model:ir.ui.menu,name:base.menu_view_base_module_configuration +msgid "Start Configuration" +msgstr "" + +#. module: base +#: model:res.country,name:base.mt +msgid "Malta" +msgstr "" + +#. module: base +#: field:ir.actions.server,fields_lines:0 +msgid "Field Mappings." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_module_module +#: view:ir.model.data:0 +#: field:ir.model.data,module:0 +#: view:ir.module.module:0 +#: field:ir.module.module.dependency,module_id:0 +#: report:ir.module.reference.graph:0 +#: field:ir.translation,module:0 +msgid "Module" +msgstr "" + +#. module: base +#: field:ir.attachment,description:0 +#: view:ir.module.module:0 +#: field:ir.module.module,description:0 +#: field:res.partner.bank,name:0 +#: view:res.partner.event:0 +#: field:res.partner.event,description:0 +#: view:res.request:0 +msgid "Description" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_workflow_instance_form +#: model:ir.ui.menu,name:base.menu_workflow_instance +msgid "Instances" +msgstr "" + +#. module: base +#: model:res.country,name:base.aq +msgid "Antarctica" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,auto:0 +msgid "Custom python parser" +msgstr "" + +#. module: base +#: view:base.language.import:0 +msgid "_Import" +msgstr "" + +#. module: base +#: view:res.partner.canal:0 +msgid "Channel" +msgstr "" + +#. module: base +#: field:res.lang,grouping:0 +msgid "Separator Format" +msgstr "" + +#. module: base +#: selection:publisher_warranty.contract,state:0 +msgid "Unvalidated" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.next_id_9 +msgid "Database Structure" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_mass_mail +#: model:ir.model,name:base.model_partner_wizard_spam +#: view:partner.wizard.spam:0 +msgid "Mass Mailing" +msgstr "" + +#. module: base +#: model:res.country,name:base.yt +msgid "Mayotte" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_actions.py:597 +#, python-format +msgid "Please specify an action to launch !" +msgstr "" + +#. module: base +#: view:res.payterm:0 +msgid "Payment Term" +msgstr "" + +#. module: base +#: selection:res.lang,direction:0 +msgid "Right-to-Left" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +#: model:ir.actions.act_window,name:base.actions_ir_filters_view +#: view:ir.filters:0 +#: model:ir.model,name:base.model_ir_filters +#: model:ir.ui.menu,name:base.menu_ir_filters +msgid "Filters" +msgstr "" + +#. module: base +#: code:addons/orm.py:758 +#, python-format +msgid "Please check that all your lines have %d columns." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_cron_act +#: view:ir.cron:0 +#: model:ir.ui.menu,name:base.menu_ir_cron_act +msgid "Scheduled Actions" +msgstr "" + +#. module: base +#: field:res.partner.address,title:0 +#: field:res.partner.title,name:0 +#: field:res.widget,title:0 +msgid "Title" +msgstr "" + +#. module: base +#: help:ir.property,res_id:0 +msgid "If not set, acts as a default value for new resources" +msgstr "" + +#. module: base +#: code:addons/orm.py:3448 +#, python-format +msgid "Recursivity Detected." +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:262 +#, python-format +msgid "Recursion error in modules dependencies !" +msgstr "" + +#. module: base +#: view:base.language.install:0 +msgid "" +"This wizard helps you add a new language to your OpenERP system. After " +"loading a new language it becomes available as default interface language " +"for users and partners." +msgstr "" + +#. module: base +#: view:ir.model:0 +msgid "Create a Menu" +msgstr "" + +#. module: base +#: help:res.partner,vat:0 +msgid "" +"Value Added Tax number. Check the box if the partner is subjected to the " +"VAT. Used by the VAT legal statement." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_maintenance_contract +msgid "maintenance.contract" +msgstr "" + +#. module: base +#: model:res.country,name:base.ru +msgid "Russian Federation" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Urdu / اردو" +msgstr "" + +#. module: base +#: field:res.company,name:0 +msgid "Company Name" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_country +#: model:ir.ui.menu,name:base.menu_country_partner +msgid "Countries" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "RML (deprecated - use Report)" +msgstr "" + +#. module: base +#: view:ir.rule:0 +msgid "Record rules" +msgstr "" + +#. module: base +#: view:ir.property:0 +msgid "Field Information" +msgstr "" + +#. module: base +#: view:ir.actions.todo:0 +msgid "Search Actions" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_view_partner_wizard_ean_check +#: view:partner.wizard.ean.check:0 +msgid "Ean check" +msgstr "" + +#. module: base +#: field:res.partner,vat:0 +msgid "VAT" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "12. %w ==> 5 ( Friday is the 6th day)" +msgstr "" + +#. module: base +#: constraint:res.partner.category:0 +msgid "Error ! You can not create recursive categories." +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%x - Appropriate date representation." +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%d - Day of the month [01,31]." +msgstr "" + +#. module: base +#: model:res.country,name:base.tj +msgid "Tajikistan" +msgstr "" + +#. module: base +#: selection:ir.module.module,license:0 +msgid "GPL-2 or later version" +msgstr "" + +#. module: base +#: model:res.partner.title,shortcut:base.res_partner_title_sir +msgid "M." +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:429 +#, python-format +msgid "" +"Can not create the module file:\n" +" %s" +msgstr "" + +#. module: base +#: code:addons/orm.py:2973 +#, python-format +msgid "" +"Operation prohibited by access rules, or performed on an already deleted " +"document (Operation: read, Document type: %s)." +msgstr "" + +#. module: base +#: model:res.country,name:base.nr +msgid "Nauru" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:200 +#, python-format +msgid "The certificate ID of the module must be unique !" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_property +msgid "ir.property" +msgstr "" + +#. module: base +#: selection:ir.actions.act_window,view_type:0 +#: selection:ir.actions.act_window.view,view_mode:0 +#: view:ir.ui.view:0 +#: selection:ir.ui.view,type:0 +#: selection:wizard.ir.model.menu.create.line,view_type:0 +msgid "Form" +msgstr "" + +#. module: base +#: model:res.country,name:base.me +msgid "Montenegro" +msgstr "" + +#. module: base +#: view:ir.cron:0 +msgid "Technical Data" +msgstr "" + +#. module: base +#: view:res.partner:0 +#: field:res.partner,category_id:0 +msgid "Categories" +msgstr "" + +#. module: base +#: view:base.language.import:0 +msgid "" +"If you need another language than the official ones available, you can " +"import a language pack from here. Other OpenERP languages than the official " +"ones can be found on launchpad." +msgstr "" + +#. module: base +#: view:ir.module.module:0 +#: selection:ir.module.module,state:0 +#: selection:ir.module.module.dependency,state:0 +msgid "To be upgraded" +msgstr "" + +#. module: base +#: model:res.country,name:base.ly +msgid "Libya" +msgstr "" + +#. module: base +#: model:res.country,name:base.cf +msgid "Central African Republic" +msgstr "" + +#. module: base +#: model:res.country,name:base.li +msgid "Liechtenstein" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_partner_sms_send +#: view:partner.sms.send:0 +msgid "Send SMS" +msgstr "" + +#. module: base +#: field:res.partner,ean13:0 +msgid "EAN13" +msgstr "" + +#. module: base +#: code:addons/orm.py:1622 +#, python-format +msgid "Invalid Architecture!" +msgstr "" + +#. module: base +#: model:res.country,name:base.pt +msgid "Portugal" +msgstr "" + +#. module: base +#: sql_constraint:ir.model.data:0 +msgid "" +"You cannot have multiple records with the same id for the same module !" +msgstr "" + +#. module: base +#: field:ir.module.module,certificate:0 +msgid "Quality Certificate" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "6. %d, %m ==> 05, 12" +msgstr "" + +#. module: base +#: field:res.config.users,date:0 +#: field:res.users,date:0 +msgid "Last Connection" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,help:0 +msgid "Action description" +msgstr "" + +#. module: base +#: help:res.partner,customer:0 +msgid "Check this box if the partner is a customer." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.res_lang_act_window +#: model:ir.model,name:base.model_res_lang +#: model:ir.ui.menu,name:base.menu_res_lang_act_window +#: view:res.lang:0 +msgid "Languages" +msgstr "" + +#. module: base +#: selection:workflow.activity,join_mode:0 +#: selection:workflow.activity,split_mode:0 +msgid "Xor" +msgstr "" + +#. module: base +#: model:res.country,name:base.ec +msgid "Ecuador" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_export_language.py:52 +#, python-format +msgid "" +"Save this document to a .CSV file and open it with your favourite " +"spreadsheet software. The file encoding is UTF-8. You have to translate the " +"latest column before reimporting it." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_customer_form +#: model:ir.actions.act_window,name:base.action_partner_form +#: model:ir.ui.menu,name:base.menu_partner_form +#: view:res.partner:0 +msgid "Customers" +msgstr "" + +#. module: base +#: model:res.country,name:base.au +msgid "Australia" +msgstr "" + +#. module: base +#: help:res.partner,lang:0 +msgid "" +"If the selected language is loaded in the system, all documents related to " +"this partner will be printed in this language. If not, it will be english." +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "Menu :" +msgstr "" + +#. module: base +#: selection:ir.model.fields,state:0 +msgid "Base Field" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract:0 +msgid "Validate" +msgstr "" + +#. module: base +#: field:ir.actions.todo,restart:0 +msgid "Restart" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,report_sxw_content:0 +#: field:ir.actions.report.xml,report_sxw_content_data:0 +msgid "SXW content" +msgstr "" + +#. module: base +#: view:ir.actions.wizard:0 +#: field:wizard.ir.model.menu.create.line,wizard_id:0 +msgid "Wizard" +msgstr "" + +#. module: base +#: view:ir.cron:0 +msgid "Action to Trigger" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:136 +#, python-format +msgid "\"email_from\" needs to be set to send welcome mails to users" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "Constraint" +msgstr "" + +#. module: base +#: selection:ir.values,key:0 +#: selection:res.partner.address,type:0 +msgid "Default" +msgstr "" + +#. module: base +#: view:ir.model.fields:0 +#: field:ir.model.fields,required:0 +#: field:res.partner.bank.type.field,required:0 +msgid "Required" +msgstr "" + +#. module: base +#: view:res.users:0 +msgid "Default Filters" +msgstr "" + +#. module: base +#: field:res.request.history,name:0 +msgid "Summary" +msgstr "" + +#. module: base +#: field:multi_company.default,expression:0 +msgid "Expression" +msgstr "" + +#. module: base +#: help:ir.actions.server,subject:0 +msgid "" +"Specify the subject. You can use fields from the object, e.g. `Hello [[ " +"object.partner_id.name ]]`" +msgstr "" + +#. module: base +#: view:res.company:0 +msgid "Header/Footer" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,help:0 +msgid "" +"Optional help text for the users with a description of the target view, such " +"as its usage and purpose." +msgstr "" + +#. module: base +#: model:res.country,name:base.va +msgid "Holy See (Vatican City State)" +msgstr "" + +#. module: base +#: field:base.module.import,module_file:0 +msgid "Module .ZIP file" +msgstr "" + +#. module: base +#: field:ir.ui.view,xml_id:0 +msgid "XML ID" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_16 +msgid "Telecom sector" +msgstr "" + +#. module: base +#: field:workflow.transition,trigger_model:0 +msgid "Trigger Object" +msgstr "" + +#. module: base +#: view:res.users:0 +msgid "Current Activity" +msgstr "" + +#. module: base +#: view:workflow.activity:0 +#: field:workflow.activity,in_transitions:0 +msgid "Incoming Transitions" +msgstr "" + +#. module: base +#: model:res.country,name:base.sr +msgid "Suriname" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.marketing_menu +msgid "Marketing" +msgstr "" + +#. module: base +#: view:res.partner.bank:0 +#: model:res.partner.bank.type,name:base.bank_normal +msgid "Bank account" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (HN) / Español (HN)" +msgstr "" + +#. module: base +#: view:ir.sequence.type:0 +msgid "Sequence Type" +msgstr "" + +#. module: base +#: view:ir.ui.view.custom:0 +msgid "Customized Architecture" +msgstr "" + +#. module: base +#: field:ir.module.module,license:0 +msgid "License" +msgstr "" + +#. module: base +#: field:ir.attachment,url:0 +msgid "Url" +msgstr "" + +#. module: base +#: selection:ir.actions.todo,restart:0 +msgid "Always" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "SQL Constraint" +msgstr "" + +#. module: base +#: field:ir.actions.server,srcmodel_id:0 +#: field:ir.model.fields,model_id:0 +msgid "Model" +msgstr "" + +#. module: base +#: view:base.language.install:0 +msgid "" +"The selected language has been successfully installed. You must change the " +"preferences of the user and open a new menu to view the changes." +msgstr "" + +#. module: base +#: sql_constraint:ir.config_parameter:0 +msgid "Key must be unique." +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +msgid "Open a Window" +msgstr "" + +#. module: base +#: model:res.country,name:base.gq +msgid "Equatorial Guinea" +msgstr "" + +#. module: base +#: view:base.module.import:0 +#: model:ir.actions.act_window,name:base.action_view_base_module_import +msgid "Module Import" +msgstr "" + +#. module: base +#: field:res.bank,zip:0 +#: field:res.partner.address,zip:0 +#: field:res.partner.bank,zip:0 +msgid "Zip" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +#: field:ir.module.module,author:0 +msgid "Author" +msgstr "" + +#. module: base +#: model:res.country,name:base.mk +msgid "FYROM" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%c - Appropriate date and time representation." +msgstr "" + +#. module: base +#: code:addons/base/res/res_config.py:422 +#, python-format +msgid "" +"Your database is now fully configured.\n" +"\n" +"Click 'Continue' and enjoy your OpenERP experience..." +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Hebrew / עִבְרִי" +msgstr "" + +#. module: base +#: model:res.country,name:base.bo +msgid "Bolivia" +msgstr "" + +#. module: base +#: model:res.country,name:base.gh +msgid "Ghana" +msgstr "" + +#. module: base +#: field:res.lang,direction:0 +msgid "Direction" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +#: model:ir.actions.act_window,name:base.action_ui_view +#: field:ir.actions.act_window,view_ids:0 +#: field:ir.actions.act_window,views:0 +#: field:ir.module.module,views_by_module:0 +#: model:ir.ui.menu,name:base.menu_action_ui_view +#: view:ir.ui.view:0 +msgid "Views" +msgstr "" + +#. module: base +#: view:res.groups:0 +#: field:res.groups,rule_groups:0 +msgid "Rules" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:216 +#, python-format +msgid "You try to remove a module that is installed or will be installed" +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +msgid "The selected modules have been updated / installed !" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (PR) / Español (PR)" +msgstr "" + +#. module: base +#: model:res.country,name:base.gt +msgid "Guatemala" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_workflow_form +#: model:ir.ui.menu,name:base.menu_low_workflow +#: model:ir.ui.menu,name:base.menu_workflow +#: model:ir.ui.menu,name:base.menu_workflow_root +msgid "Workflows" +msgstr "" + +#. module: base +#: field:ir.translation,xml_id:0 +msgid "XML Id" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_config_user_form +msgid "Create Users" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_partner_title +msgid "res.partner.title" +msgstr "" + +#. module: base +#: view:ir.values:0 +msgid "tree_but_action, client_print_multi" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_retailers0 +msgid "Retailers" +msgstr "" + +#. module: base +#: help:ir.cron,priority:0 +msgid "" +"0=Very Urgent\n" +"10=Not urgent" +msgstr "" + +#. module: base +#: view:res.config:0 +#: view:res.config.installer:0 +msgid "Skip" +msgstr "" + +#. module: base +#: model:res.country,name:base.ls +msgid "Lesotho" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:114 +#, python-format +msgid "You can not remove the model '%s' !" +msgstr "" + +#. module: base +#: model:res.country,name:base.ke +msgid "Kenya" +msgstr "" + +#. module: base +#: view:res.partner.event:0 +msgid "Event" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_custom_reports +msgid "Custom Reports" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Abkhazian / аҧсуа" +msgstr "" + +#. module: base +#: view:base.module.configuration:0 +msgid "System Configuration Done" +msgstr "" + +#. module: base +#: code:addons/orm.py:929 +#, python-format +msgid "Error occurred while validating the field(s) %s: %s" +msgstr "" + +#. module: base +#: view:ir.property:0 +msgid "Generic" +msgstr "" + +#. module: base +#: model:res.country,name:base.sm +msgid "San Marino" +msgstr "" + +#. module: base +#: model:res.country,name:base.bm +msgid "Bermuda" +msgstr "" + +#. module: base +#: model:res.country,name:base.pe +msgid "Peru" +msgstr "" + +#. module: base +#: selection:ir.model.fields,on_delete:0 +msgid "Set NULL" +msgstr "" + +#. module: base +#: model:res.country,name:base.bj +msgid "Benin" +msgstr "" + +#. module: base +#: code:addons/base/publisher_warranty/publisher_warranty.py:281 +#, python-format +msgid "That contract is already registered in the system." +msgstr "" + +#. module: base +#: help:ir.sequence,suffix:0 +msgid "Suffix value of the record for the sequence" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (PY) / Español (PY)" +msgstr "" + +#. module: base +#: field:ir.config_parameter,key:0 +msgid "Key" +msgstr "" + +#. module: base +#: field:res.company,rml_header:0 +msgid "RML Header" +msgstr "" + +#. module: base +#: field:partner.sms.send,app_id:0 +msgid "API ID" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:486 +#, python-format +msgid "" +"You can not create this document (%s) ! Be sure your user belongs to one of " +"these groups: %s." +msgstr "" + +#. module: base +#: model:res.country,name:base.mu +msgid "Mauritius" +msgstr "" + +#. module: base +#: view:ir.model.access:0 +#: view:ir.rule:0 +msgid "Full Access" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +#: view:ir.actions.report.xml:0 +#: view:ir.actions.wizard:0 +#: view:ir.model.fields:0 +#: model:ir.ui.menu,name:base.menu_security +msgid "Security" +msgstr "" + +#. module: base +#: model:res.widget,title:base.openerp_favorites_twitter_widget +msgid "OpenERP Favorites" +msgstr "" + +#. module: base +#: model:res.country,name:base.za +msgid "South Africa" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +#: selection:ir.module.module,state:0 +#: selection:ir.module.module.dependency,state:0 +msgid "Installed" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Ukrainian / українська" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_translation +#: model:ir.ui.menu,name:base.menu_action_translation +msgid "Translation Terms" +msgstr "" + +#. module: base +#: model:res.country,name:base.sn +msgid "Senegal" +msgstr "" + +#. module: base +#: model:res.country,name:base.hu +msgid "Hungary" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_groups +msgid "res.groups" +msgstr "" + +#. module: base +#: model:res.country,name:base.br +msgid "Brazil" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%M - Minute [00,59]." +msgstr "" + +#. module: base +#: selection:ir.module.module,license:0 +msgid "Affero GPL-3" +msgstr "" + +#. module: base +#: field:ir.sequence,number_next:0 +msgid "Next Number" +msgstr "" + +#. module: base +#: help:workflow.transition,condition:0 +msgid "Expression to be satisfied if we want the transition done." +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (PA) / Español (PA)" +msgstr "" + +#. module: base +#: view:res.currency:0 +#: field:res.currency,rate_ids:0 +msgid "Rates" +msgstr "" + +#. module: base +#: model:res.country,name:base.sy +msgid "Syria" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "======================================================" +msgstr "" + +#. module: base +#: help:ir.actions.server,mobile:0 +msgid "" +"Provides fields that be used to fetch the mobile number, e.g. you select the " +"invoice, then `object.invoice_address_id.mobile` is the field which gives " +"the correct mobile number" +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +msgid "System update completed" +msgstr "" + +#. module: base +#: selection:res.request,state:0 +msgid "draft" +msgstr "" + +#. module: base +#: selection:ir.property,type:0 +#: field:res.currency,date:0 +#: field:res.currency.rate,name:0 +#: field:res.partner,date:0 +#: field:res.partner.event,date:0 +#: field:res.request,date_sent:0 +msgid "Date" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,report_sxw:0 +msgid "SXW path" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +msgid "Data" +msgstr "" + +#. module: base +#: field:ir.ui.menu,parent_id:0 +#: field:wizard.ir.model.menu.create,menu_id:0 +msgid "Parent Menu" +msgstr "" + +#. module: base +#: field:ir.rule,perm_unlink:0 +msgid "Apply For Delete" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:319 +#, python-format +msgid "Cannot rename column to %s, because that column already exists!" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +msgid "Attached To" +msgstr "" + +#. module: base +#: field:res.lang,decimal_point:0 +msgid "Decimal Separator" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_res_groups +msgid "" +"A group is a set of functional areas that will be assigned to the user in " +"order to give them access and rights to specific applications and tasks in " +"the system. You can create custom groups or edit the ones existing by " +"default in order to customize the view of the menu that users will be able " +"to see. Whether they can have a read, write, create and delete access right " +"can be managed from here." +msgstr "" + +#. module: base +#: view:res.partner:0 +#: view:res.request:0 +#: field:res.request,history:0 +msgid "History" +msgstr "" + +#. module: base +#: field:ir.attachment,create_uid:0 +msgid "Creator" +msgstr "" + +#. module: base +#: model:res.company,overdue_msg:base.main_company +msgid "" +"Please note that the following payments are now due. If your payment " +" has been sent, kindly forward your payment details. If " +"payment will be delayed further, please contact us " +"to discuss. \n" +"Would your payment have been carried out after this mail was sent, please " +"consider the present one as void." +msgstr "" + +#. module: base +#: model:res.country,name:base.mx +msgid "Mexico" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_base_config_plugins +msgid "Plugins" +msgstr "" + +#. module: base +#: field:res.company,child_ids:0 +msgid "Child Companies" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_users +msgid "res.users" +msgstr "" + +#. module: base +#: model:res.country,name:base.ni +msgid "Nicaragua" +msgstr "" + +#. module: base +#: code:addons/orm.py:1046 +#, python-format +msgid "The write method is not implemented on this object !" +msgstr "" + +#. module: base +#: view:res.partner.event:0 +msgid "General Description" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_config_simple_view_form +#: view:res.config.view:0 +msgid "Configure Your Interface" +msgstr "" + +#. module: base +#: field:ir.values,meta:0 +msgid "Meta Datas" +msgstr "" + +#. module: base +#: sql_constraint:ir.ui.view_sc:0 +msgid "Shortcut for this menu already exists!" +msgstr "" + +#. module: base +#: model:res.country,name:base.ve +msgid "Venezuela" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "9. %j ==> 340" +msgstr "" + +#. module: base +#: model:res.country,name:base.zm +msgid "Zambia" +msgstr "" + +#. module: base +#: help:res.partner,user_id:0 +msgid "" +"The internal user that is in charge of communicating with this partner if " +"any." +msgstr "" + +#. module: base +#: field:res.partner,parent_id:0 +msgid "Parent Partner" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Cancel Upgrade" +msgstr "" + +#. module: base +#: model:res.country,name:base.ci +msgid "Ivory Coast (Cote D'Ivoire)" +msgstr "" + +#. module: base +#: model:res.country,name:base.kz +msgid "Kazakhstan" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%w - Weekday number [0(Sunday),6]." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_partner_form +msgid "" +"A customer is an entity you do business with, like a company or an " +"organization. A customer can have several contacts or addresses which are " +"the people working for this company. You can use the history tab, to follow " +"all transactions related to a customer: sales order, emails, opportunities, " +"claims, etc. If you use the email gateway, the Outlook or the Thunderbird " +"plugin, don't forget to register emails to each contact so that the gateway " +"will automatically attach incoming emails to the right partner." +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,name:0 +#: field:ir.actions.todo,name:0 +#: field:ir.cron,name:0 +#: field:ir.model.access,name:0 +#: field:ir.model.fields,name:0 +#: field:ir.module.category,name:0 +#: field:ir.module.module,name:0 +#: field:ir.module.module.dependency,name:0 +#: report:ir.module.reference.graph:0 +#: field:ir.property,name:0 +#: field:ir.rule,name:0 +#: field:ir.sequence,name:0 +#: field:ir.sequence.type,name:0 +#: field:ir.values,name:0 +#: field:multi_company.default,name:0 +#: field:res.bank,name:0 +#: field:res.config.view,name:0 +#: field:res.lang,name:0 +#: field:res.partner,name:0 +#: field:res.partner.bank.type,name:0 +#: view:res.partner.event:0 +#: field:res.request.link,name:0 +#: field:workflow,name:0 +#: field:workflow.activity,name:0 +msgid "Name" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,multi:0 +msgid "" +"If set to true, the action will not be displayed on the right toolbar of a " +"form view" +msgstr "" + +#. module: base +#: model:res.country,name:base.ms +msgid "Montserrat" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:205 +#, python-format +msgid "" +"The Selection Options expression is not a valid Pythonic expression.Please " +"provide an expression in the [('key','Label'), ...] format." +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_translation_app +msgid "Application Terms" +msgstr "" + +#. module: base +#: help:res.config.users,context_tz:0 +#: help:res.users,context_tz:0 +msgid "" +"The user's timezone, used to perform timezone conversions between the server " +"and the client." +msgstr "" + +#. module: base +#: field:ir.module.module,demo:0 +msgid "Demo data" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "English (UK)" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Japanese / 日本語" +msgstr "" + +#. module: base +#: help:workflow.transition,act_from:0 +msgid "" +"Source activity. When this activity is over, the condition is tested to " +"determine if we can start the ACT_TO activity." +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_3 +msgid "Starter Partner" +msgstr "" + +#. module: base +#: help:ir.model.fields,relation_field:0 +msgid "" +"For one2many fields, the field on the target model that implement the " +"opposite many2one relationship" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_act_window_view +msgid "ir.actions.act_window.view" +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "Web" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "English (CA)" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_publisher_warranty_contract +msgid "publisher_warranty.contract" +msgstr "" + +#. module: base +#: model:res.country,name:base.et +msgid "Ethiopia" +msgstr "" + +#. module: base +#: help:res.country.state,code:0 +msgid "The state code in three chars.\n" +msgstr "" + +#. module: base +#: model:res.country,name:base.sj +msgid "Svalbard and Jan Mayen Islands" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_wizard +#: selection:ir.ui.menu,action:0 +msgid "ir.actions.wizard" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +#: view:ir.actions.report.xml:0 +#: view:ir.actions.server:0 +#: view:ir.filters:0 +#: view:res.request:0 +msgid "Group By" +msgstr "" + +#. module: base +#: view:res.config:0 +#: view:res.config.installer:0 +msgid "title" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_base_language_install +msgid "Install Language" +msgstr "" + +#. module: base +#: view:ir.translation:0 +msgid "Translation" +msgstr "" + +#. module: base +#: selection:res.request,state:0 +msgid "closed" +msgstr "" + +#. module: base +#: selection:base.language.export,state:0 +msgid "get" +msgstr "" + +#. module: base +#: help:ir.model.fields,on_delete:0 +msgid "On delete property for many2one fields" +msgstr "" + +#. module: base +#: field:ir.actions.server,write_id:0 +msgid "Write Id" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_product +msgid "Products" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,domain:0 +#: field:ir.filters,domain:0 +msgid "Domain Value" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "SMS Configuration" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (BO) / Español (BO)" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_access_act +#: model:ir.ui.menu,name:base.menu_ir_access_act +msgid "Access Controls List" +msgstr "" + +#. module: base +#: model:res.country,name:base.um +msgid "USA Minor Outlying Islands" +msgstr "" + +#. module: base +#: field:res.partner.bank,state:0 +#: field:res.partner.bank.type.field,bank_type_id:0 +msgid "Bank Type" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:58 +#: code:addons/base/res/res_user.py:67 +#, python-format +msgid "The name of the group can not start with \"-\"" +msgstr "" + +#. module: base +#: view:ir.ui.view_sc:0 +#: field:res.partner.title,shortcut:0 +msgid "Shortcut" +msgstr "" + +#. module: base +#: field:ir.model.data,date_init:0 +msgid "Init Date" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Gujarati / ગુજરાતી" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:257 +#, python-format +msgid "" +"Unable to process module \"%s\" because an external dependency is not met: %s" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract.wizard:0 +msgid "Please enter the serial key provided in your contract document:" +msgstr "" + +#. module: base +#: view:workflow.activity:0 +#: field:workflow.activity,flow_start:0 +msgid "Flow Start" +msgstr "" + +#. module: base +#: code:addons/__init__.py:834 +#, python-format +msgid "module base cannot be loaded! (hint: verify addons-path)" +msgstr "" + +#. module: base +#: view:res.partner.bank:0 +msgid "Bank Account Owner" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.act_values_form +msgid "Client Actions Connections" +msgstr "" + +#. module: base +#: field:ir.attachment,res_name:0 +#: field:ir.ui.view_sc,resource:0 +msgid "Resource Name" +msgstr "" + +#. module: base +#: selection:ir.cron,interval_type:0 +msgid "Hours" +msgstr "" + +#. module: base +#: model:res.country,name:base.gp +msgid "Guadeloupe (French)" +msgstr "" + +#. module: base +#: code:addons/base/res/res_lang.py:157 +#: code:addons/base/res/res_lang.py:159 +#: code:addons/base/res/res_lang.py:161 +#, python-format +msgid "User Error" +msgstr "" + +#. module: base +#: help:workflow.transition,signal:0 +msgid "" +"When the operation of transition comes from a button pressed in the client " +"form, signal tests the name of the pressed button. If signal is NULL, no " +"button is necessary to validate this transition." +msgstr "" + +#. module: base +#: help:multi_company.default,object_id:0 +msgid "Object affected by this rule" +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "Directory" +msgstr "" + +#. module: base +#: field:wizard.ir.model.menu.create,name:0 +msgid "Menu Name" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Author Website" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +msgid "Month" +msgstr "" + +#. module: base +#: model:res.country,name:base.my +msgid "Malaysia" +msgstr "" + +#. module: base +#: view:base.language.install:0 +#: model:ir.actions.act_window,name:base.action_view_base_language_install +msgid "Load Official Translation" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_request_history +msgid "res.request.history" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Client Action Configuration" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_partner_address +#: view:res.partner.address:0 +msgid "Partner Addresses" +msgstr "" + +#. module: base +#: help:ir.model.fields,translate:0 +msgid "" +"Whether values for this field can be translated (enables the translation " +"mechanism for that field)" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%S - Seconds [00,61]." +msgstr "" + +#. module: base +#: model:res.country,name:base.cv +msgid "Cape Verde" +msgstr "" + +#. module: base +#: view:base.module.import:0 +msgid "Select module package to import (.zip file):" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.act_res_partner_event +#: field:res.partner,events:0 +#: field:res.partner.event,name:0 +#: model:res.widget,title:base.events_widget +msgid "Events" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_url +#: selection:ir.ui.menu,action:0 +msgid "ir.actions.url" +msgstr "" + +#. module: base +#: model:res.widget,title:base.currency_converter_widget +msgid "Currency Converter" +msgstr "" + +#. module: base +#: code:addons/orm.py:156 +#, python-format +msgid "Wrong ID for the browse record, got %r, expected an integer." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_addess_tree +#: view:res.partner:0 +msgid "Partner Contacts" +msgstr "" + +#. module: base +#: field:base.module.update,add:0 +msgid "Number of modules added" +msgstr "" + +#. module: base +#: view:res.currency:0 +msgid "Price Accuracy" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Latvian / latviešu valoda" +msgstr "" + +#. module: base +#: view:res.config:0 +#: view:res.config.installer:0 +msgid "vsep" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "French / Français" +msgstr "" + +#. module: base +#: code:addons/orm.py:1049 +#, python-format +msgid "The create method is not implemented on this object !" +msgstr "" + +#. module: base +#: field:workflow.triggers,workitem_id:0 +msgid "Workitem" +msgstr "" + +#. module: base +#: view:ir.actions.todo:0 +msgid "Set as Todo" +msgstr "" + +#. module: base +#: field:ir.actions.act_window.view,act_window_id:0 +#: view:ir.actions.actions:0 +#: field:ir.actions.todo,action_id:0 +#: field:ir.ui.menu,action:0 +#: field:ir.values,action_id:0 +#: selection:ir.values,key:0 +#: view:res.users:0 +msgid "Action" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Email Configuration" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_cron +msgid "ir.cron" +msgstr "" + +#. module: base +#: view:ir.rule:0 +msgid "Combination of rules" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Current Year without Century: %(y)s" +msgstr "" + +#. module: base +#: field:ir.actions.server,trigger_obj_id:0 +msgid "Trigger On" +msgstr "" + +#. module: base +#: sql_constraint:ir.rule:0 +msgid "Rule must have at least one checked access right !" +msgstr "" + +#. module: base +#: model:res.country,name:base.fj +msgid "Fiji" +msgstr "" + +#. module: base +#: field:ir.model.fields,size:0 +msgid "Size" +msgstr "" + +#. module: base +#: model:res.country,name:base.sd +msgid "Sudan" +msgstr "" + +#. module: base +#: model:res.country,name:base.fm +msgid "Micronesia" +msgstr "" + +#. module: base +#: view:res.request.history:0 +msgid "Request History" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,menus:0 +#: field:ir.module.module,menus_by_module:0 +#: view:res.groups:0 +msgid "Menus" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Serbian (Latin) / srpski" +msgstr "" + +#. module: base +#: model:res.country,name:base.il +msgid "Israel" +msgstr "" + +#. module: base +#: model:ir.actions.wizard,name:base.wizard_server_action_create +msgid "Create Action" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_model_model +#: model:ir.model,name:base.model_ir_model +#: model:ir.ui.menu,name:base.ir_model_model_menu +msgid "Objects" +msgstr "" + +#. module: base +#: field:res.lang,time_format:0 +msgid "Time Format" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Defined Reports" +msgstr "" + +#. module: base +#: view:ir.actions.report.xml:0 +msgid "Report xml" +msgstr "" + +#. module: base +#: field:base.language.export,modules:0 +#: model:ir.actions.act_window,name:base.action_module_open_categ +#: model:ir.actions.act_window,name:base.open_module_tree +#: view:ir.module.module:0 +#: model:ir.ui.menu,name:base.menu_management +#: model:ir.ui.menu,name:base.menu_module_tree +msgid "Modules" +msgstr "" + +#. module: base +#: view:workflow.activity:0 +#: selection:workflow.activity,kind:0 +#: field:workflow.activity,subflow_id:0 +#: field:workflow.workitem,subflow_id:0 +msgid "Subflow" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_config +msgid "res.config" +msgstr "" + +#. module: base +#: field:workflow.transition,signal:0 +msgid "Signal (button Name)" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_res_bank_form +#: model:ir.ui.menu,name:base.menu_action_res_bank_form +#: view:res.bank:0 +#: field:res.partner,bank_ids:0 +msgid "Banks" +msgstr "" + +#. module: base +#: view:res.log:0 +msgid "Unread" +msgstr "" + +#. module: base +#: field:ir.cron,doall:0 +msgid "Repeat Missed" +msgstr "" + +#. module: base +#: help:ir.actions.server,state:0 +msgid "Type of the Action that is to be executed" +msgstr "" + +#. module: base +#: field:ir.server.object.lines,server_id:0 +msgid "Object Mapping" +msgstr "" + +#. module: base +#: help:res.currency,rate:0 +#: help:res.currency.rate,rate:0 +msgid "The rate of the currency to the currency of rate 1" +msgstr "" + +#. module: base +#: model:res.country,name:base.uk +msgid "United Kingdom" +msgstr "" + +#. module: base +#: view:res.config:0 +#: view:res.config.users:0 +#: view:res.config.view:0 +msgid "res_config_contents" +msgstr "" + +#. module: base +#: help:res.partner.category,active:0 +msgid "The active field allows you to hide the category without removing it." +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "Object:" +msgstr "" + +#. module: base +#: model:res.country,name:base.bw +msgid "Botswana" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_title_partner +#: model:ir.ui.menu,name:base.menu_partner_title_partner +#: view:res.partner.title:0 +msgid "Partner Titles" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,auto_refresh:0 +msgid "Add an auto-refresh on the view" +msgstr "" + +#. module: base +#: help:res.partner,employee:0 +msgid "Check this box if the partner is an Employee." +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,report_rml_content:0 +#: field:ir.actions.report.xml,report_rml_content_data:0 +msgid "RML content" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_workflow_workitem_form +#: model:ir.ui.menu,name:base.menu_workflow_workitem +msgid "Workitems" +msgstr "" + +#. module: base +#: field:base.language.export,advice:0 +msgid "Advice" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_attachment +msgid "ir.attachment" +msgstr "" + +#. module: base +#: code:addons/orm.py:3533 +#, python-format +msgid "" +"You cannot perform this operation. New Record Creation is not allowed for " +"this object as this object is for reporting purpose." +msgstr "" + +#. module: base +#: view:base.language.import:0 +msgid "- module,type,name,res_id,src,value" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Lithuanian / Lietuvių kalba" +msgstr "" + +#. module: base +#: help:ir.actions.server,record_id:0 +msgid "" +"Provide the field name where the record id is stored after the create " +"operations. If it is empty, you can not track the new record." +msgstr "" + +#. module: base +#: help:ir.model.fields,relation:0 +msgid "For relationship fields, the technical name of the target model" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Indonesian / Bahasa Indonesia" +msgstr "" + +#. module: base +#: field:ir.ui.view,inherit_id:0 +msgid "Inherited View" +msgstr "" + +#. module: base +#: view:ir.translation:0 +msgid "Source Term" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_main_pm +msgid "Project" +msgstr "" + +#. module: base +#: field:ir.ui.menu,web_icon_hover_data:0 +msgid "Web Icon Image (hover)" +msgstr "" + +#. module: base +#: view:base.module.import:0 +msgid "Module file successfully imported!" +msgstr "" + +#. module: base +#: selection:ir.actions.todo,state:0 +msgid "Cancelled" +msgstr "" + +#. module: base +#: view:res.config.users:0 +msgid "Create User" +msgstr "" + +#. module: base +#: view:partner.clear.ids:0 +msgid "Want to Clear Ids ? " +msgstr "" + +#. module: base +#: field:publisher_warranty.contract,name:0 +#: field:publisher_warranty.contract.wizard,name:0 +msgid "Serial Key" +msgstr "" + +#. module: base +#: selection:res.request,priority:0 +msgid "Low" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_audit +msgid "Audit" +msgstr "" + +#. module: base +#: model:res.country,name:base.lc +msgid "Saint Lucia" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract:0 +msgid "Maintenance Contract" +msgstr "" + +#. module: base +#: help:ir.actions.server,trigger_obj_id:0 +msgid "Select the object from the model on which the workflow will executed." +msgstr "" + +#. module: base +#: field:res.partner,employee:0 +msgid "Employee" +msgstr "" + +#. module: base +#: field:ir.model.access,perm_create:0 +msgid "Create Access" +msgstr "" + +#. module: base +#: field:res.partner.address,state_id:0 +msgid "Fed. State" +msgstr "" + +#. module: base +#: field:ir.actions.server,copy_object:0 +msgid "Copy Of" +msgstr "" + +#. module: base +#: field:ir.model,osv_memory:0 +msgid "In-memory model" +msgstr "" + +#. module: base +#: view:partner.clear.ids:0 +msgid "Clear Ids" +msgstr "" + +#. module: base +#: model:res.country,name:base.io +msgid "British Indian Ocean Territory" +msgstr "" + +#. module: base +#: field:res.config.users,view:0 +#: field:res.config.view,view:0 +#: field:res.users,view:0 +msgid "Interface" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Field Mapping" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract:0 +msgid "Refresh Validation Dates" +msgstr "" + +#. module: base +#: view:ir.model:0 +#: field:ir.model.fields,ttype:0 +msgid "Field Type" +msgstr "" + +#. module: base +#: field:res.country.state,code:0 +msgid "State Code" +msgstr "" + +#. module: base +#: field:ir.model.fields,on_delete:0 +msgid "On delete" +msgstr "" + +#. module: base +#: selection:res.lang,direction:0 +msgid "Left-to-Right" +msgstr "" + +#. module: base +#: view:res.lang:0 +#: field:res.lang,translatable:0 +msgid "Translatable" +msgstr "" + +#. module: base +#: model:res.country,name:base.vn +msgid "Vietnam" +msgstr "" + +#. module: base +#: field:res.config.users,signature:0 +#: view:res.users:0 +#: field:res.users,signature:0 +msgid "Signature" +msgstr "" + +#. module: base +#: code:addons/fields.py:456 +#: code:addons/fields.py:654 +#: code:addons/fields.py:656 +#: code:addons/fields.py:658 +#: code:addons/fields.py:660 +#: code:addons/fields.py:662 +#: code:addons/fields.py:664 +#, python-format +msgid "Not Implemented" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_widget_user +msgid "res.widget.user" +msgstr "" + +#. module: base +#: field:res.partner.category,complete_name:0 +msgid "Full Name" +msgstr "" + +#. module: base +#: view:base.module.configuration:0 +msgid "_Ok" +msgstr "" + +#. module: base +#: help:ir.filters,user_id:0 +msgid "False means for every user" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:198 +#, python-format +msgid "The name of the module must be unique !" +msgstr "" + +#. module: base +#: model:res.country,name:base.mz +msgid "Mozambique" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_project_long_term +msgid "Long Term Planning" +msgstr "" + +#. module: base +#: field:ir.actions.server,message:0 +#: view:partner.sms.send:0 +#: field:partner.wizard.spam,text:0 +#: field:res.log,name:0 +msgid "Message" +msgstr "" + +#. module: base +#: field:ir.actions.act_window.view,multi:0 +msgid "On Multiple Doc." +msgstr "" + +#. module: base +#: view:res.partner:0 +#: field:res.partner,user_id:0 +msgid "Salesman" +msgstr "" + +#. module: base +#: field:res.partner,address:0 +#: view:res.partner.address:0 +msgid "Contacts" +msgstr "" + +#. module: base +#: code:addons/orm.py:3199 +#, python-format +msgid "" +"Unable to delete this document because it is used as a default property" +msgstr "" + +#. module: base +#: view:res.widget.wizard:0 +msgid "Add" +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +#: model:ir.actions.act_window,name:base.action_view_base_module_upgrade_window +#: model:ir.ui.menu,name:base.menu_view_base_module_upgrade +msgid "Apply Scheduled Upgrades" +msgstr "" + +#. module: base +#: view:res.widget:0 +msgid "Widgets" +msgstr "" + +#. module: base +#: model:res.country,name:base.cz +msgid "Czech Republic" +msgstr "" + +#. module: base +#: view:res.widget.wizard:0 +msgid "Widget Wizard" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.act_ir_actions_todo_form +msgid "" +"The configuration wizards are used to help you configure a new instance of " +"OpenERP. They are launched during the installation of new modules, but you " +"can choose to restart some wizards manually from this menu." +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:206 +#, python-format +msgid "" +"Please use the change password wizard (in User Preferences or User menu) to " +"change your own password." +msgstr "" + +#. module: base +#: code:addons/orm.py:1350 +#, python-format +msgid "Insufficient fields for Calendar View!" +msgstr "" + +#. module: base +#: selection:ir.property,type:0 +msgid "Integer" +msgstr "" + +#. module: base +#: help:ir.actions.report.xml,report_rml:0 +msgid "" +"The path to the main report file (depending on Report Type) or NULL if the " +"content is in another data field" +msgstr "" + +#. module: base +#: help:res.config.users,company_id:0 +#: help:res.users,company_id:0 +msgid "The company this user is currently working for." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_wizard_ir_model_menu_create +msgid "wizard.ir.model.menu.create" +msgstr "" + +#. module: base +#: view:workflow.transition:0 +msgid "Transition" +msgstr "" + +#. module: base +#: field:res.groups,menu_access:0 +msgid "Access Menu" +msgstr "" + +#. module: base +#: model:res.country,name:base.na +msgid "Namibia" +msgstr "" + +#. module: base +#: model:res.country,name:base.mn +msgid "Mongolia" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Created Menus" +msgstr "" + +#. module: base +#: selection:ir.ui.view,type:0 +msgid "mdx" +msgstr "" + +#. module: base +#: model:res.country,name:base.bi +msgid "Burundi" +msgstr "" + +#. module: base +#: view:base.language.install:0 +#: view:base.module.import:0 +#: view:base.module.update:0 +#: view:publisher_warranty.contract.wizard:0 +#: view:res.request:0 +#: wizard_button:server.action.create,init,end:0 +#: wizard_button:server.action.create,step_1,end:0 +msgid "Close" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (MX) / Español (MX)" +msgstr "" + +#. module: base +#: view:res.log:0 +msgid "My Logs" +msgstr "" + +#. module: base +#: model:res.country,name:base.bt +msgid "Bhutan" +msgstr "" + +#. module: base +#: help:ir.sequence,number_next:0 +msgid "Next number of this sequence" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_11 +msgid "Textile Suppliers" +msgstr "" + +#. module: base +#: selection:ir.actions.url,target:0 +msgid "This Window" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract:0 +msgid "Publisher Warranty Contracts" +msgstr "" + +#. module: base +#: help:res.log,name:0 +msgid "The logging message." +msgstr "" + +#. module: base +#: field:base.language.export,format:0 +msgid "File Format" +msgstr "" + +#. module: base +#: field:res.lang,iso_code:0 +msgid "ISO code" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_config_view +msgid "res.config.view" +msgstr "" + +#. module: base +#: view:res.log:0 +#: field:res.log,read:0 +msgid "Read" +msgstr "" + +#. module: base +#: sql_constraint:res.country:0 +msgid "The name of the country must be unique !" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_country_state +msgid "" +"If you are working on the American market, you can manage the different " +"federal states you are working on from here. Each state is attached to one " +"country." +msgstr "" + +#. module: base +#: view:workflow.workitem:0 +msgid "Workflow Workitems" +msgstr "" + +#. module: base +#: model:res.country,name:base.vc +msgid "Saint Vincent & Grenadines" +msgstr "" + +#. module: base +#: field:partner.sms.send,password:0 +#: field:res.config.users,password:0 +#: field:res.users,password:0 +msgid "Password" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_model_fields +#: view:ir.model:0 +#: field:ir.model,field_id:0 +#: model:ir.model,name:base.model_ir_model_fields +#: view:ir.model.fields:0 +#: model:ir.ui.menu,name:base.ir_model_model_fields +msgid "Fields" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_employee_form +msgid "Employees" +msgstr "" + +#. module: base +#: help:res.log,read:0 +msgid "" +"If this log item has been read, get() should not send it to the client" +msgstr "" + +#. module: base +#: field:res.company,rml_header2:0 +#: field:res.company,rml_header3:0 +msgid "RML Internal Header" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,search_view_id:0 +msgid "Search View Ref." +msgstr "" + +#. module: base +#: field:ir.module.module,installed_version:0 +msgid "Latest version" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.res_partner_canal-act +msgid "" +"Track from where is coming your leads and opportunities by creating specific " +"channels that will be maintained at the creation of a document in the " +"system. Some examples of channels can be: Website, Phone Call, Reseller, etc." +msgstr "" + +#. module: base +#: model:res.partner.bank.type.field,name:base.bank_normal_field +msgid "acc_number" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_address_form +#: model:ir.ui.menu,name:base.menu_partner_address_form +msgid "Addresses" +msgstr "" + +#. module: base +#: model:res.country,name:base.mm +msgid "Myanmar" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Chinese (CN) / 简体中文" +msgstr "" + +#. module: base +#: field:res.bank,street:0 +#: field:res.partner.address,street:0 +#: field:res.partner.bank,street:0 +msgid "Street" +msgstr "" + +#. module: base +#: model:res.country,name:base.yu +msgid "Yugoslavia" +msgstr "" + +#. module: base +#: field:ir.model.data,name:0 +msgid "XML Identifier" +msgstr "" + +#. module: base +#: model:res.country,name:base.ca +msgid "Canada" +msgstr "" + +#. module: base +#: selection:ir.module.module.dependency,state:0 +msgid "Unknown" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_res_users_my +msgid "Change My Preferences" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_actions.py:164 +#, python-format +msgid "Invalid model name in the action definition." +msgstr "" + +#. module: base +#: field:partner.sms.send,text:0 +msgid "SMS Message" +msgstr "" + +#. module: base +#: model:res.country,name:base.cm +msgid "Cameroon" +msgstr "" + +#. module: base +#: model:res.country,name:base.bf +msgid "Burkina Faso" +msgstr "" + +#. module: base +#: selection:ir.actions.todo,state:0 +msgid "Skipped" +msgstr "" + +#. module: base +#: selection:ir.model.fields,state:0 +msgid "Custom Field" +msgstr "" + +#. module: base +#: field:ir.module.module,web:0 +msgid "Has a web component" +msgstr "" + +#. module: base +#: model:res.country,name:base.cc +msgid "Cocos (Keeling) Islands" +msgstr "" + +#. module: base +#: selection:base.language.install,state:0 +#: selection:base.module.import,state:0 +#: selection:base.module.update,state:0 +msgid "init" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "11. %U or %W ==> 48 (49th week)" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_partner_bank_type_field +msgid "Bank type fields" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Dutch / Nederlands" +msgstr "" + +#. module: base +#: code:addons/base/res/res_config.py:384 +#, python-format +msgid "" +"\n" +"\n" +"This addon is already installed on your system" +msgstr "" + +#. module: base +#: help:ir.cron,interval_number:0 +msgid "Repeat every x." +msgstr "" + +#. module: base +#: wizard_view:server.action.create,step_1:0 +#: wizard_field:server.action.create,step_1,report:0 +msgid "Select Report" +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "1cm 28cm 20cm 28cm" +msgstr "" + +#. module: base +#: field:ir.module.module,maintainer:0 +msgid "Maintainer" +msgstr "" + +#. module: base +#: field:ir.sequence,suffix:0 +msgid "Suffix" +msgstr "" + +#. module: base +#: model:res.country,name:base.mo +msgid "Macau" +msgstr "" + +#. module: base +#: model:ir.actions.report.xml,name:base.res_partner_address_report +msgid "Labels" +msgstr "" + +#. module: base +#: field:partner.wizard.spam,email_from:0 +msgid "Sender's email" +msgstr "" + +#. module: base +#: field:ir.default,field_name:0 +msgid "Object Field" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (PE) / Español (PE)" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "French (CH) / Français (CH)" +msgstr "" + +#. module: base +#: help:res.config.users,action_id:0 +#: help:res.users,action_id:0 +msgid "" +"If specified, this action will be opened at logon for this user, in addition " +"to the standard menu." +msgstr "" + +#. module: base +#: view:ir.values:0 +msgid "Client Actions" +msgstr "" + +#. module: base +#: code:addons/orm.py:1806 +#, python-format +msgid "The exists method is not implemented on this object !" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:336 +#, python-format +msgid "" +"You try to upgrade a module that depends on the module: %s.\n" +"But this module is not available in your system." +msgstr "" + +#. module: base +#: field:workflow.transition,act_to:0 +msgid "Destination Activity" +msgstr "" + +#. module: base +#: view:ir.values:0 +msgid "Connect Events to Actions" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_base_update_translations +msgid "base.update.translations" +msgstr "" + +#. module: base +#: field:ir.module.category,parent_id:0 +#: field:res.partner.category,parent_id:0 +msgid "Parent Category" +msgstr "" + +#. module: base +#: selection:ir.property,type:0 +msgid "Integer Big" +msgstr "" + +#. module: base +#: selection:res.partner.address,type:0 +#: selection:res.partner.title,domain:0 +#: view:res.users:0 +msgid "Contact" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_ui_menu +msgid "ir.ui.menu" +msgstr "" + +#. module: base +#: model:res.country,name:base.us +msgid "United States" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Cancel Uninstall" +msgstr "" + +#. module: base +#: view:res.bank:0 +#: view:res.partner:0 +#: view:res.partner.address:0 +msgid "Communication" +msgstr "" + +#. module: base +#: view:ir.actions.report.xml:0 +msgid "RML Report" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_server_object_lines +msgid "ir.server.object.lines" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:531 +#, python-format +msgid "Module %s: Invalid Quality Certificate" +msgstr "" + +#. module: base +#: model:res.country,name:base.kw +msgid "Kuwait" +msgstr "" + +#. module: base +#: field:workflow.workitem,inst_id:0 +msgid "Instance" +msgstr "" + +#. module: base +#: help:ir.actions.report.xml,attachment:0 +msgid "" +"This is the filename of the attachment used to store the printing result. " +"Keep empty to not save the printed reports. You can use a python expression " +"with the object and time variables." +msgstr "" + +#. module: base +#: selection:ir.property,type:0 +msgid "Many2One" +msgstr "" + +#. module: base +#: model:res.country,name:base.ng +msgid "Nigeria" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:250 +#, python-format +msgid "For selection fields, the Selection Options must be given!" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_sms_send +msgid "SMS Send" +msgstr "" + +#. module: base +#: field:res.company,user_ids:0 +msgid "Accepted Users" +msgstr "" + +#. module: base +#: field:ir.ui.menu,web_icon_data:0 +msgid "Web Icon Image" +msgstr "" + +#. module: base +#: view:ir.values:0 +msgid "Values for Event Type" +msgstr "" + +#. module: base +#: selection:ir.model.fields,select_level:0 +msgid "Always Searchable" +msgstr "" + +#. module: base +#: model:res.country,name:base.hk +msgid "Hong Kong" +msgstr "" + +#. module: base +#: help:ir.actions.server,name:0 +msgid "Easy to Refer action by name e.g. One Sales Order -> Many Invoices" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_partner_address_form +msgid "" +"Customers (also called Partners in other areas of the system) helps you " +"manage your address book of companies whether they are prospects, customers " +"and/or suppliers. The partner form allows you to track and record all the " +"necessary information to interact with your partners from the company " +"address to their contacts as well as pricelists, and much more. If you " +"installed the CRM, with the history tab, you can track all the interactions " +"with a partner such as opportunities, emails, or sales orders issued." +msgstr "" + +#. module: base +#: model:res.country,name:base.ph +msgid "Philippines" +msgstr "" + +#. module: base +#: model:res.country,name:base.ma +msgid "Morocco" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "2. %a ,%A ==> Fri, Friday" +msgstr "" + +#. module: base +#: field:res.widget,content:0 +msgid "Content" +msgstr "" + +#. module: base +#: help:ir.rule,global:0 +msgid "If no group is specified the rule is global and applied to everyone" +msgstr "" + +#. module: base +#: model:res.country,name:base.td +msgid "Chad" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_workflow_transition +msgid "workflow.transition" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%a - Abbreviated weekday name." +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "Introspection report on objects" +msgstr "" + +#. module: base +#: model:res.country,name:base.pf +msgid "Polynesia (French)" +msgstr "" + +#. module: base +#: model:res.country,name:base.dm +msgid "Dominica" +msgstr "" + +#. module: base +#: sql_constraint:publisher_warranty.contract:0 +msgid "" +"Your publisher warranty contract is already subscribed in the system !" +msgstr "" + +#. module: base +#: help:ir.cron,nextcall:0 +msgid "Next planned execution date for this scheduler" +msgstr "" + +#. module: base +#: help:res.config.users,view:0 +#: help:res.users,view:0 +msgid "Choose between the simplified interface and the extended one" +msgstr "" + +#. module: base +#: model:res.country,name:base.np +msgid "Nepal" +msgstr "" + +#. module: base +#: code:addons/orm.py:2307 +#, python-format +msgid "" +"Invalid value for reference field \"%s\" (last part must be a non-zero " +"integer): \"%s\"" +msgstr "" + +#. module: base +#: help:ir.cron,args:0 +msgid "Arguments to be passed to the method. e.g. (uid,)" +msgstr "" + +#. module: base +#: help:ir.ui.menu,groups_id:0 +msgid "" +"If you have groups, the visibility of this menu will be based on these " +"groups. If this field is empty, OpenERP will compute visibility based on the " +"related object's read access." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_ui_view_custom +#: model:ir.ui.menu,name:base.menu_action_ui_view_custom +#: view:ir.ui.view.custom:0 +msgid "Customized Views" +msgstr "" + +#. module: base +#: view:partner.sms.send:0 +msgid "Bulk SMS send" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Seconde: %(sec)s" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_view_base_module_update +msgid "Update Modules List" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:255 +#, python-format +msgid "" +"Unable to upgrade module \"%s\" because an external dependency is not met: %s" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:257 +#, python-format +msgid "" +"Please keep in mind that documents currently displayed may not be relevant " +"after switching to another company. If you have unsaved changes, please make " +"sure to save and close all forms before switching to a different company. " +"(You can click on Cancel in the User Preferences now)" +msgstr "" + +#. module: base +#: view:ir.actions.configuration.wizard:0 +msgid "Continue" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Thai / ภาษาไทย" +msgstr "" + +#. module: base +#: code:addons/orm.py:158 +#, python-format +msgid "Object %s does not exists" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Slovenian / slovenščina" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,attachment_use:0 +msgid "Reload from Attachment" +msgstr "" + +#. module: base +#: model:res.country,name:base.bv +msgid "Bouvet Island" +msgstr "" + +#. module: base +#: field:ir.attachment,name:0 +msgid "Attachment Name" +msgstr "" + +#. module: base +#: field:base.language.export,data:0 +#: field:base.language.import,data:0 +msgid "File" +msgstr "" + +#. module: base +#: view:res.config.users:0 +msgid "Add User" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_view_base_module_upgrade_install +msgid "Module Upgrade Install" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_configuration_wizard +msgid "ir.actions.configuration.wizard" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%b - Abbreviated month name." +msgstr "" + +#. module: base +#: field:res.partner,supplier:0 +#: view:res.partner.address:0 +#: field:res.partner.address,is_supplier_add:0 +#: model:res.partner.category,name:base.res_partner_category_8 +msgid "Supplier" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +#: selection:ir.actions.server,state:0 +msgid "Multi Actions" +msgstr "" + +#. module: base +#: view:base.language.export:0 +#: view:base.language.import:0 +#: view:wizard.ir.model.menu.create:0 +msgid "_Close" +msgstr "" + +#. module: base +#: field:multi_company.default,company_dest_id:0 +msgid "Default Company" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (EC) / Español (EC)" +msgstr "" + +#. module: base +#: help:ir.ui.view,xml_id:0 +msgid "ID of the view defined in xml file" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_base_module_import +#: model:ir.ui.menu,name:base.menu_view_base_module_import +msgid "Import Module" +msgstr "" + +#. module: base +#: model:res.country,name:base.as +msgid "American Samoa" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,res_model:0 +msgid "Model name of the object to open in the view window" +msgstr "" + +#. module: base +#: field:res.log,secondary:0 +msgid "Secondary Log" +msgstr "" + +#. module: base +#: field:ir.model.fields,selectable:0 +msgid "Selectable" +msgstr "" + +#. module: base +#: view:res.request.link:0 +msgid "Request Link" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +#: selection:ir.attachment,type:0 +#: field:ir.module.module,url:0 +msgid "URL" +msgstr "" + +#. module: base +#: help:res.country,name:0 +msgid "The full name of the country." +msgstr "" + +#. module: base +#: selection:ir.actions.server,state:0 +msgid "Iteration" +msgstr "" + +#. module: base +#: code:addons/orm.py:3448 +#: code:addons/orm.py:3532 +#, python-format +msgid "UserError" +msgstr "" + +#. module: base +#: model:res.country,name:base.ae +msgid "United Arab Emirates" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_crm_case_job_req_main +msgid "Recruitment" +msgstr "" + +#. module: base +#: model:res.country,name:base.re +msgid "Reunion (French)" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:321 +#, python-format +msgid "" +"New column name must still start with x_ , because it is a custom field!" +msgstr "" + +#. module: base +#: view:ir.model.access:0 +#: view:ir.rule:0 +#: field:ir.rule,global:0 +msgid "Global" +msgstr "" + +#. module: base +#: model:res.country,name:base.mp +msgid "Northern Mariana Islands" +msgstr "" + +#. module: base +#: model:res.country,name:base.sb +msgid "Solomon Islands" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:490 +#: code:addons/orm.py:1897 +#: code:addons/orm.py:2972 +#: code:addons/orm.py:3165 +#: code:addons/orm.py:3365 +#: code:addons/orm.py:3817 +#, python-format +msgid "AccessError" +msgstr "" + +#. module: base +#: view:res.request:0 +msgid "Waiting" +msgstr "" + +#. module: base +#: code:addons/__init__.py:834 +#, python-format +msgid "Could not load base module" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "8. %I:%M:%S %p ==> 06:25:20 PM" +msgstr "" + +#. module: base +#: code:addons/orm.py:1803 +#, python-format +msgid "The copy method is not implemented on this object !" +msgstr "" + +#. module: base +#: field:res.log,create_date:0 +msgid "Creation Date" +msgstr "" + +#. module: base +#: view:ir.translation:0 +#: model:ir.ui.menu,name:base.menu_translation +msgid "Translations" +msgstr "" + +#. module: base +#: field:ir.sequence,padding:0 +msgid "Number padding" +msgstr "" + +#. module: base +#: view:ir.actions.report.xml:0 +msgid "Report" +msgstr "" + +#. module: base +#: model:res.country,name:base.ua +msgid "Ukraine" +msgstr "" + +#. module: base +#: model:res.country,name:base.to +msgid "Tonga" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_module_category +#: view:ir.module.category:0 +msgid "Module Category" +msgstr "" + +#. module: base +#: view:partner.wizard.ean.check:0 +msgid "Ignore" +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "Reference Guide" +msgstr "" + +#. module: base +#: view:ir.ui.view:0 +msgid "Architecture" +msgstr "" + +#. module: base +#: model:res.country,name:base.ml +msgid "Mali" +msgstr "" + +#. module: base +#: help:res.config.users,email:0 +#: help:res.users,email:0 +msgid "" +"If an email is provided, the user will be sent a message welcoming him.\n" +"\n" +"Warning: if \"email_from\" and \"smtp_server\" aren't configured, it won't " +"be possible to email new users." +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Flemish (BE) / Vlaams (BE)" +msgstr "" + +#. module: base +#: field:ir.cron,interval_number:0 +msgid "Interval Number" +msgstr "" + +#. module: base +#: model:res.country,name:base.tk +msgid "Tokelau" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,report_xsl:0 +msgid "XSL path" +msgstr "" + +#. module: base +#: model:res.country,name:base.bn +msgid "Brunei Darussalam" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +#: field:ir.actions.act_window,view_type:0 +#: field:ir.actions.act_window.view,view_mode:0 +#: field:ir.ui.view,type:0 +#: field:wizard.ir.model.menu.create.line,view_type:0 +msgid "View Type" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.next_id_2 +msgid "User Interface" +msgstr "" + +#. module: base +#: field:ir.attachment,create_date:0 +msgid "Date Created" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_todo +msgid "ir.actions.todo" +msgstr "" + +#. module: base +#: code:addons/base/res/res_config.py:94 +#, python-format +msgid "Couldn't find previous ir.actions.todo" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +msgid "General Settings" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_administration_shortcut +msgid "Custom Shortcuts" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Vietnamese / Tiếng Việt" +msgstr "" + +#. module: base +#: model:res.country,name:base.dz +msgid "Algeria" +msgstr "" + +#. module: base +#: model:res.country,name:base.be +msgid "Belgium" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_osv_memory_autovacuum +msgid "osv_memory.autovacuum" +msgstr "" + +#. module: base +#: field:base.language.export,lang:0 +#: field:base.language.install,lang:0 +#: field:base.update.translations,lang:0 +#: field:ir.translation,lang:0 +#: field:res.config.users,context_lang:0 +#: field:res.partner,lang:0 +#: field:res.users,context_lang:0 +msgid "Language" +msgstr "" + +#. module: base +#: model:res.country,name:base.gm +msgid "Gambia" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_res_company_form +#: model:ir.model,name:base.model_res_company +#: model:ir.ui.menu,name:base.menu_action_res_company_form +#: model:ir.ui.menu,name:base.menu_res_company_global +#: view:res.company:0 +#: field:res.config.users,company_ids:0 +#: view:res.users:0 +#: field:res.users,company_ids:0 +msgid "Companies" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%H - Hour (24-hour clock) [00,23]." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_widget +msgid "res.widget" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:258 +#, python-format +msgid "Model %s does not exist!" +msgstr "" + +#. module: base +#: code:addons/base/res/res_lang.py:159 +#, python-format +msgid "You cannot delete the language which is User's Preferred Language !" +msgstr "" + +#. module: base +#: code:addons/fields.py:103 +#, python-format +msgid "Not implemented get_memory method !" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +#: field:ir.actions.server,code:0 +#: selection:ir.actions.server,state:0 +msgid "Python Code" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_module_import.py:67 +#, python-format +msgid "Can not create the module file: %s !" +msgstr "" + +#. module: base +#: model:ir.module.module,description:base.module_meta_information +msgid "The kernel of OpenERP, needed for all installation." +msgstr "" + +#. module: base +#: view:base.language.install:0 +#: view:base.module.import:0 +#: view:base.module.update:0 +#: view:base.module.upgrade:0 +#: view:base.update.translations:0 +#: view:partner.clear.ids:0 +#: view:partner.sms.send:0 +#: view:partner.wizard.spam:0 +#: view:publisher_warranty.contract.wizard:0 +#: view:res.widget.wizard:0 +msgid "Cancel" +msgstr "" + +#. module: base +#: selection:base.language.export,format:0 +msgid "PO File" +msgstr "" + +#. module: base +#: model:res.country,name:base.nt +msgid "Neutral Zone" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Hindi / हिंदी" +msgstr "" + +#. module: base +#: view:ir.model:0 +msgid "Custom" +msgstr "" + +#. module: base +#: view:res.request:0 +msgid "Current" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_9 +msgid "Components Supplier" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_res_users +#: field:ir.default,uid:0 +#: model:ir.ui.menu,name:base.menu_action_res_users +#: model:ir.ui.menu,name:base.menu_users +#: view:res.groups:0 +#: field:res.groups,users:0 +#: view:res.users:0 +msgid "Users" +msgstr "" + +#. module: base +#: field:ir.module.module,published_version:0 +msgid "Published Version" +msgstr "" + +#. module: base +#: model:res.country,name:base.is +msgid "Iceland" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_action_window +#: model:ir.ui.menu,name:base.menu_ir_action_window +msgid "Window Actions" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%I - Hour (12-hour clock) [01,12]." +msgstr "" + +#. module: base +#: selection:publisher_warranty.contract.wizard,state:0 +msgid "Finished" +msgstr "" + +#. module: base +#: model:res.country,name:base.de +msgid "Germany" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Week of the year: %(woy)s" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_14 +msgid "Bad customers" +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "Reports :" +msgstr "" + +#. module: base +#: model:res.country,name:base.gy +msgid "Guyana" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,view_type:0 +msgid "" +"View type: set to 'tree' for a hierarchical tree view, or 'form' for other " +"views" +msgstr "" + +#. module: base +#: code:addons/base/res/res_config.py:421 +#, python-format +msgid "Click 'Continue' to configure the next addon..." +msgstr "" + +#. module: base +#: field:ir.actions.server,record_id:0 +msgid "Create Id" +msgstr "" + +#. module: base +#: model:res.country,name:base.hn +msgid "Honduras" +msgstr "" + +#. module: base +#: help:res.config.users,menu_tips:0 +#: help:res.users,menu_tips:0 +msgid "" +"Check out this box if you want to always display tips on each menu action" +msgstr "" + +#. module: base +#: model:res.country,name:base.eg +msgid "Egypt" +msgstr "" + +#. module: base +#: field:ir.rule,perm_read:0 +msgid "Apply For Read" +msgstr "" + +#. module: base +#: help:ir.actions.server,model_id:0 +msgid "" +"Select the object on which the action will work (read, write, create)." +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_actions.py:629 +#, python-format +msgid "Please specify server option --email-from !" +msgstr "" + +#. module: base +#: field:base.language.import,name:0 +msgid "Language Name" +msgstr "" + +#. module: base +#: selection:ir.property,type:0 +msgid "Boolean" +msgstr "" + +#. module: base +#: view:ir.model:0 +msgid "Fields Description" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +#: view:ir.cron:0 +#: view:ir.model.access:0 +#: view:ir.model.data:0 +#: view:ir.model.fields:0 +#: view:ir.module.module:0 +#: view:ir.rule:0 +#: view:ir.ui.view:0 +#: view:ir.values:0 +#: view:res.partner:0 +#: view:res.partner.address:0 +#: view:workflow.activity:0 +msgid "Group By..." +msgstr "" + +#. module: base +#: view:ir.model.fields:0 +#: field:ir.model.fields,readonly:0 +#: field:res.partner.bank.type.field,readonly:0 +msgid "Readonly" +msgstr "" + +#. module: base +#: field:ir.actions.act_window.view,view_id:0 +#: field:ir.default,page:0 +#: selection:ir.translation,type:0 +#: field:wizard.ir.model.menu.create.line,view_id:0 +msgid "View" +msgstr "" + +#. module: base +#: selection:ir.module.module,state:0 +#: selection:ir.module.module.dependency,state:0 +msgid "To be installed" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,display_menu_tip:0 +msgid "" +"It gives the status if the tip has to be displayed or not when a user " +"executes an action" +msgstr "" + +#. module: base +#: view:ir.model:0 +#: model:ir.module.module,shortdesc:base.module_meta_information +#: field:res.currency,base:0 +msgid "Base" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Telugu / తెలుగు" +msgstr "" + +#. module: base +#: model:res.country,name:base.lr +msgid "Liberia" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +#: view:ir.model:0 +#: view:res.groups:0 +#: view:res.partner:0 +#: field:res.partner,comment:0 +#: model:res.widget,title:base.note_widget +msgid "Notes" +msgstr "" + +#. module: base +#: field:ir.config_parameter,value:0 +#: field:ir.property,value_binary:0 +#: field:ir.property,value_datetime:0 +#: field:ir.property,value_float:0 +#: field:ir.property,value_integer:0 +#: field:ir.property,value_reference:0 +#: field:ir.property,value_text:0 +#: selection:ir.server.object.lines,type:0 +#: field:ir.server.object.lines,value:0 +#: view:ir.values:0 +#: field:ir.values,value:0 +#: field:ir.values,value_unpickle:0 +msgid "Value" +msgstr "" + +#. module: base +#: field:ir.sequence,code:0 +#: field:ir.sequence.type,code:0 +#: selection:ir.translation,type:0 +#: field:res.bank,code:0 +#: field:res.partner.bank.type,code:0 +msgid "Code" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_config_installer +msgid "res.config.installer" +msgstr "" + +#. module: base +#: model:res.country,name:base.mc +msgid "Monaco" +msgstr "" + +#. module: base +#: selection:ir.cron,interval_type:0 +msgid "Minutes" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "Help" +msgstr "" + +#. module: base +#: help:res.config.users,menu_id:0 +#: help:res.users,menu_id:0 +msgid "" +"If specified, the action will replace the standard menu for this user." +msgstr "" + +#. module: base +#: selection:ir.actions.server,state:0 +msgid "Write Object" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_fundrising +msgid "Fund Raising" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_sequence_type +#: model:ir.ui.menu,name:base.menu_ir_sequence_type +msgid "Sequence Codes" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (CO) / Español (CO)" +msgstr "" + +#. module: base +#: view:base.module.configuration:0 +msgid "" +"All pending configuration wizards have been executed. You may restart " +"individual wizards via the list of configuration wizards." +msgstr "" + +#. module: base +#: wizard_button:server.action.create,step_1,create:0 +msgid "Create" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Current Year with Century: %(year)s" +msgstr "" + +#. module: base +#: field:ir.exports,export_fields:0 +msgid "Export ID" +msgstr "" + +#. module: base +#: model:res.country,name:base.fr +msgid "France" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_log +msgid "res.log" +msgstr "" + +#. module: base +#: help:ir.translation,module:0 +#: help:ir.translation,xml_id:0 +msgid "Maps to the ir_model_data for which this translation is provided." +msgstr "" + +#. module: base +#: view:workflow.activity:0 +#: field:workflow.activity,flow_stop:0 +msgid "Flow Stop" +msgstr "" + +#. module: base +#: selection:ir.cron,interval_type:0 +msgid "Weeks" +msgstr "" + +#. module: base +#: model:res.country,name:base.af +msgid "Afghanistan, Islamic State of" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_module_import.py:67 +#, python-format +msgid "Error !" +msgstr "" + +#. module: base +#: model:res.partner.bank.type.field,name:base.bank_normal_field_contry +msgid "country_id" +msgstr "" + +#. module: base +#: field:ir.cron,interval_type:0 +msgid "Interval Unit" +msgstr "" + +#. module: base +#: field:publisher_warranty.contract,kind:0 +#: field:workflow.activity,kind:0 +msgid "Kind" +msgstr "" + +#. module: base +#: code:addons/orm.py:3775 +#, python-format +msgid "This method does not exist anymore" +msgstr "" + +#. module: base +#: field:res.bank,fax:0 +#: field:res.partner.address,fax:0 +msgid "Fax" +msgstr "" + +#. module: base +#: field:res.lang,thousands_sep:0 +msgid "Thousands Separator" +msgstr "" + +#. module: base +#: field:res.request,create_date:0 +msgid "Created Date" +msgstr "" + +#. module: base +#: help:ir.actions.server,loop_action:0 +msgid "" +"Select the action that will be executed. Loop action will not be avaliable " +"inside loop." +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Chinese (TW) / 正體字" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_request +msgid "res.request" +msgstr "" + +#. module: base +#: view:ir.model:0 +msgid "In Memory" +msgstr "" + +#. module: base +#: view:ir.actions.todo:0 +msgid "Todo" +msgstr "" + +#. module: base +#: field:ir.attachment,datas:0 +msgid "File Content" +msgstr "" + +#. module: base +#: model:res.country,name:base.pa +msgid "Panama" +msgstr "" + +#. module: base +#: model:res.partner.title,name:base.res_partner_title_ltd +msgid "Ltd" +msgstr "" + +#. module: base +#: help:workflow.transition,group_id:0 +msgid "" +"The group that a user must have to be authorized to validate this transition." +msgstr "" + +#. module: base +#: constraint:res.config.users:0 +#: constraint:res.users:0 +msgid "The chosen company is not in the allowed companies for this user" +msgstr "" + +#. module: base +#: model:res.country,name:base.gi +msgid "Gibraltar" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,report_name:0 +msgid "Service Name" +msgstr "" + +#. module: base +#: model:res.country,name:base.pn +msgid "Pitcairn Island" +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +msgid "" +"We suggest to reload the menu tab to see the new menus (Ctrl+T then Ctrl+R)." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_rule +#: model:ir.ui.menu,name:base.menu_action_rule +msgid "Record Rules" +msgstr "" + +#. module: base +#: field:res.config.users,name:0 +#: field:res.users,name:0 +msgid "User Name" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Day of the year: %(doy)s" +msgstr "" + +#. module: base +#: view:ir.model:0 +#: view:ir.model.fields:0 +#: view:workflow.activity:0 +msgid "Properties" +msgstr "" + +#. module: base +#: help:ir.sequence,padding:0 +msgid "" +"OpenERP will automatically adds some '0' on the left of the 'Next Number' to " +"get the required padding size." +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%A - Full weekday name." +msgstr "" + +#. module: base +#: selection:ir.cron,interval_type:0 +msgid "Months" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,search_view:0 +msgid "Search View" +msgstr "" + +#. module: base +#: sql_constraint:res.lang:0 +msgid "The code of the language must be unique !" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_attachment +#: view:ir.actions.report.xml:0 +#: view:ir.attachment:0 +#: model:ir.ui.menu,name:base.menu_action_attachment +msgid "Attachments" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_base_partner +#: model:ir.ui.menu,name:base.menu_sale_config_sales +#: model:ir.ui.menu,name:base.menu_sales +msgid "Sales" +msgstr "" + +#. module: base +#: field:ir.actions.server,child_ids:0 +msgid "Other Actions" +msgstr "" + +#. module: base +#: selection:ir.actions.todo,state:0 +#: view:res.config.users:0 +msgid "Done" +msgstr "" + +#. module: base +#: model:res.partner.title,name:base.res_partner_title_miss +msgid "Miss" +msgstr "" + +#. module: base +#: view:ir.model.access:0 +#: field:ir.model.access,perm_write:0 +#: view:ir.rule:0 +msgid "Write Access" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%m - Month number [01,12]." +msgstr "" + +#. module: base +#: field:res.bank,city:0 +#: field:res.partner,city:0 +#: field:res.partner.address,city:0 +#: field:res.partner.bank,city:0 +msgid "City" +msgstr "" + +#. module: base +#: model:res.country,name:base.qa +msgid "Qatar" +msgstr "" + +#. module: base +#: model:res.country,name:base.it +msgid "Italy" +msgstr "" + +#. module: base +#: view:ir.actions.todo:0 +#: selection:ir.actions.todo,state:0 +msgid "To Do" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Estonian / Eesti keel" +msgstr "" + +#. module: base +#: field:res.config.users,email:0 +#: field:res.partner,email:0 +#: field:res.users,email:0 +msgid "E-mail" +msgstr "" + +#. module: base +#: selection:ir.module.module,license:0 +msgid "GPL-3 or later version" +msgstr "" + +#. module: base +#: field:workflow.activity,action:0 +msgid "Python Action" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "English (US)" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_model_data +#: view:ir.model.data:0 +#: model:ir.ui.menu,name:base.ir_model_data_menu +msgid "Object Identifiers" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_partner_title_partner +msgid "" +"Manage the partner titles you want to have available in your system. The " +"partner titles is the legal status of the company: Private Limited, SA, etc." +msgstr "" + +#. module: base +#: view:base.language.export:0 +msgid "To browse official translations, you can start with these links:" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:484 +#, python-format +msgid "" +"You can not read this document (%s) ! Be sure your user belongs to one of " +"these groups: %s." +msgstr "" + +#. module: base +#: view:res.bank:0 +#: field:res.config.users,address_id:0 +#: view:res.partner.address:0 +#: view:res.users:0 +#: field:res.users,address_id:0 +msgid "Address" +msgstr "" + +#. module: base +#: field:ir.module.module,latest_version:0 +msgid "Installed version" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Mongolian / монгол" +msgstr "" + +#. module: base +#: model:res.country,name:base.mr +msgid "Mauritania" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_translation +msgid "ir.translation" +msgstr "" + +#. module: base +#: view:base.module.update:0 +msgid "Module update result" +msgstr "" + +#. module: base +#: view:workflow.activity:0 +#: field:workflow.workitem,act_id:0 +msgid "Activity" +msgstr "" + +#. module: base +#: view:res.partner:0 +#: view:res.partner.address:0 +msgid "Postal Address" +msgstr "" + +#. module: base +#: field:res.company,parent_id:0 +msgid "Parent Company" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (CR) / Español (CR)" +msgstr "" + +#. module: base +#: field:res.currency.rate,rate:0 +msgid "Rate" +msgstr "" + +#. module: base +#: model:res.country,name:base.cg +msgid "Congo" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "Examples" +msgstr "" + +#. module: base +#: field:ir.default,value:0 +msgid "Default Value" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_tools +msgid "Tools" +msgstr "" + +#. module: base +#: model:res.country,name:base.kn +msgid "Saint Kitts & Nevis Anguilla" +msgstr "" + +#. module: base +#: code:addons/base/res/res_currency.py:100 +#, python-format +msgid "" +"No rate found \n" +"for the currency: %s \n" +"at the date: %s" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_ui_view_custom +msgid "" +"Customized views are used when users reorganize the content of their " +"dashboard views (via web client)" +msgstr "" + +#. module: base +#: field:ir.model,name:0 +#: field:ir.model.fields,model:0 +#: field:ir.values,model:0 +msgid "Object Name" +msgstr "" + +#. module: base +#: help:ir.actions.server,srcmodel_id:0 +msgid "" +"Object in which you want to create / write the object. If it is empty then " +"refer to the Object field." +msgstr "" + +#. module: base +#: view:ir.module.module:0 +#: selection:ir.module.module,state:0 +#: selection:ir.module.module.dependency,state:0 +msgid "Not Installed" +msgstr "" + +#. module: base +#: view:workflow.activity:0 +#: field:workflow.activity,out_transitions:0 +msgid "Outgoing Transitions" +msgstr "" + +#. module: base +#: field:ir.ui.menu,icon:0 +msgid "Icon" +msgstr "" + +#. module: base +#: help:ir.model.fields,model_id:0 +msgid "The model this field belongs to" +msgstr "" + +#. module: base +#: model:res.country,name:base.mq +msgid "Martinique (French)" +msgstr "" + +#. module: base +#: view:ir.sequence.type:0 +msgid "Sequences Type" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.res_request-act +#: model:ir.ui.menu,name:base.menu_res_request_act +#: model:ir.ui.menu,name:base.menu_resquest_ref +#: view:res.request:0 +msgid "Requests" +msgstr "" + +#. module: base +#: model:res.country,name:base.ye +msgid "Yemen" +msgstr "" + +#. module: base +#: selection:workflow.activity,split_mode:0 +msgid "Or" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.res_log_act_window +#: model:ir.ui.menu,name:base.menu_res_log_act_window +msgid "Client Logs" +msgstr "" + +#. module: base +#: model:res.country,name:base.al +msgid "Albania" +msgstr "" + +#. module: base +#: model:res.country,name:base.ws +msgid "Samoa" +msgstr "" + +#. module: base +#: code:addons/base/res/res_lang.py:161 +#, python-format +msgid "" +"You cannot delete the language which is Active !\n" +"Please de-activate the language first." +msgstr "" + +#. module: base +#: view:base.language.install:0 +#: view:base.module.import:0 +msgid "" +"Please be patient, this operation may take a few minutes (depending on the " +"number of modules currently installed)..." +msgstr "" + +#. module: base +#: field:ir.ui.menu,child_id:0 +msgid "Child IDs" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_actions.py:713 +#: code:addons/base/ir/ir_actions.py:716 +#, python-format +msgid "Problem in configuration `Record Id` in Server Action!" +msgstr "" + +#. module: base +#: code:addons/orm.py:2306 +#: code:addons/orm.py:2316 +#, python-format +msgid "ValidateError" +msgstr "" + +#. module: base +#: view:base.module.import:0 +#: view:base.module.update:0 +msgid "Open Modules" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_res_bank_form +msgid "Manage bank records you want to be used in the system." +msgstr "" + +#. module: base +#: view:base.module.import:0 +msgid "Import module" +msgstr "" + +#. module: base +#: field:ir.actions.server,loop_action:0 +msgid "Loop Action" +msgstr "" + +#. module: base +#: help:ir.actions.report.xml,report_file:0 +msgid "" +"The path to the main report file (depending on Report Type) or NULL if the " +"content is in another field" +msgstr "" + +#. module: base +#: model:res.country,name:base.la +msgid "Laos" +msgstr "" + +#. module: base +#: selection:ir.actions.server,state:0 +#: field:res.config.users,user_email:0 +#: field:res.users,user_email:0 +msgid "Email" +msgstr "" + +#. module: base +#: field:res.config.users,action_id:0 +#: field:res.users,action_id:0 +msgid "Home Action" +msgstr "" + +#. module: base +#: code:addons/custom.py:558 +#, python-format +msgid "" +"The sum of the data (2nd field) is null.\n" +"We can't draw a pie chart !" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_lunch_reporting +#: model:ir.ui.menu,name:base.menu_project_report +#: model:ir.ui.menu,name:base.menu_report_association +#: model:ir.ui.menu,name:base.menu_report_marketing +#: model:ir.ui.menu,name:base.menu_reporting +#: model:ir.ui.menu,name:base.next_id_64 +#: model:ir.ui.menu,name:base.next_id_73 +#: model:ir.ui.menu,name:base.reporting_menu +msgid "Reporting" +msgstr "" + +#. module: base +#: model:res.country,name:base.tg +msgid "Togo" +msgstr "" + +#. module: base +#: selection:ir.module.module,license:0 +msgid "Other Proprietary" +msgstr "" + +#. module: base +#: selection:workflow.activity,kind:0 +msgid "Stop All" +msgstr "" + +#. module: base +#: code:addons/orm.py:412 +#, python-format +msgid "The read_group method is not implemented on this object !" +msgstr "" + +#. module: base +#: view:ir.model.data:0 +msgid "Updatable" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "3. %x ,%X ==> 12/05/08, 18:25:20" +msgstr "" + +#. module: base +#: selection:ir.model.fields,on_delete:0 +msgid "Cascade" +msgstr "" + +#. module: base +#: field:workflow.transition,group_id:0 +msgid "Group Required" +msgstr "" + +#. module: base +#: view:ir.actions.configuration.wizard:0 +msgid "Next Configuration Step" +msgstr "" + +#. module: base +#: field:res.groups,comment:0 +msgid "Comment" +msgstr "" + +#. module: base +#: model:res.country,name:base.ro +msgid "Romania" +msgstr "" + +#. module: base +#: help:ir.cron,doall:0 +msgid "" +"Enable this if you want to execute missed occurences as soon as the server " +"restarts." +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +msgid "Start update" +msgstr "" + +#. module: base +#: code:addons/base/publisher_warranty/publisher_warranty.py:144 +#, python-format +msgid "Contract validation error" +msgstr "" + +#. module: base +#: field:res.country.state,name:0 +msgid "State Name" +msgstr "" + +#. module: base +#: field:workflow.activity,join_mode:0 +msgid "Join Mode" +msgstr "" + +#. module: base +#: field:res.config.users,context_tz:0 +#: field:res.users,context_tz:0 +msgid "Timezone" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_report_xml +#: selection:ir.ui.menu,action:0 +msgid "ir.actions.report.xml" +msgstr "" + +#. module: base +#: model:res.partner.title,shortcut:base.res_partner_title_miss +msgid "Mss" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_ui_view +msgid "ir.ui.view" +msgstr "" + +#. module: base +#: constraint:res.partner:0 +msgid "Error ! You can not create recursive associated members." +msgstr "" + +#. module: base +#: help:res.lang,code:0 +msgid "This field is used to set/get locales for user" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_2 +msgid "OpenERP Partners" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_hr_manager +msgid "HR Manager Dashboard" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:253 +#, python-format +msgid "" +"Unable to install module \"%s\" because an external dependency is not met: %s" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Search modules" +msgstr "" + +#. module: base +#: model:res.country,name:base.by +msgid "Belarus" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,name:0 +#: field:ir.actions.act_window_close,name:0 +#: field:ir.actions.actions,name:0 +#: field:ir.actions.server,name:0 +#: field:ir.actions.url,name:0 +#: field:ir.filters,name:0 +msgid "Action Name" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_res_users +msgid "" +"Create and manage users that will connect to the system. Users can be " +"deactivated should there be a period of time during which they will/should " +"not connect to the system. You can assign them groups in order to give them " +"specific access to the applications they need to use in the system." +msgstr "" + +#. module: base +#: selection:res.request,priority:0 +msgid "Normal" +msgstr "" + +#. module: base +#: field:res.bank,street2:0 +#: field:res.partner.address,street2:0 +msgid "Street2" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_view_base_module_update +msgid "Module Update" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_module_upgrade.py:95 +#, python-format +msgid "Following modules are not installed or unknown: %s" +msgstr "" + +#. module: base +#: view:ir.cron:0 +#: field:ir.cron,user_id:0 +#: view:ir.filters:0 +#: field:ir.filters,user_id:0 +#: field:ir.ui.view.custom,user_id:0 +#: field:ir.values,user_id:0 +#: field:res.log,user_id:0 +#: field:res.partner.event,user_id:0 +#: view:res.users:0 +#: field:res.widget.user,user_id:0 +msgid "User" +msgstr "" + +#. module: base +#: model:res.country,name:base.pr +msgid "Puerto Rico" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +msgid "Open Window" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,auto_search:0 +msgid "Auto Search" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,filter:0 +msgid "Filter" +msgstr "" + +#. module: base +#: model:res.partner.title,shortcut:base.res_partner_title_madam +msgid "Ms." +msgstr "" + +#. module: base +#: model:res.country,name:base.ch +msgid "Switzerland" +msgstr "" + +#. module: base +#: model:res.country,name:base.gd +msgid "Grenada" +msgstr "" + +#. module: base +#: model:res.country,name:base.wf +msgid "Wallis and Futuna Islands" +msgstr "" + +#. module: base +#: selection:server.action.create,init,type:0 +msgid "Open Report" +msgstr "" + +#. module: base +#: field:res.currency,rounding:0 +msgid "Rounding factor" +msgstr "" + +#. module: base +#: view:base.language.install:0 +msgid "Load" +msgstr "" + +#. module: base +#: help:res.config.users,name:0 +#: help:res.users,name:0 +msgid "The new user's real name, used for searching and most listings" +msgstr "" + +#. module: base +#: code:addons/osv.py:154 +#: code:addons/osv.py:156 +#, python-format +msgid "Integrity Error" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_wizard_screen +msgid "ir.wizard.screen" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:223 +#, python-format +msgid "Size of the field can never be less than 1 !" +msgstr "" + +#. module: base +#: model:res.country,name:base.so +msgid "Somalia" +msgstr "" + +#. module: base +#: selection:publisher_warranty.contract,state:0 +msgid "Terminated" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_13 +msgid "Important customers" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "Update Terms" +msgstr "" + +#. module: base +#: field:partner.sms.send,mobile_to:0 +#: field:res.request,act_to:0 +#: field:res.request.history,act_to:0 +msgid "To" +msgstr "" + +#. module: base +#: view:ir.cron:0 +#: field:ir.cron,args:0 +msgid "Arguments" +msgstr "" + +#. module: base +#: code:addons/orm.py:716 +#, python-format +msgid "Database ID doesn't exist: %s : %s" +msgstr "" + +#. module: base +#: selection:ir.module.module,license:0 +msgid "GPL Version 2" +msgstr "" + +#. module: base +#: selection:ir.module.module,license:0 +msgid "GPL Version 3" +msgstr "" + +#. module: base +#: code:addons/orm.py:836 +#, python-format +msgid "key '%s' not found in selection field '%s'" +msgstr "" + +#. module: base +#: view:partner.wizard.ean.check:0 +msgid "Correct EAN13" +msgstr "" + +#. module: base +#: code:addons/orm.py:2317 +#, python-format +msgid "The value \"%s\" for the field \"%s\" is not in the selection" +msgstr "" + +#. module: base +#: field:res.partner,customer:0 +#: view:res.partner.address:0 +#: field:res.partner.address,is_customer_add:0 +#: model:res.partner.category,name:base.res_partner_category_0 +msgid "Customer" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (NI) / Español (NI)" +msgstr "" + +#. module: base +#: field:ir.module.module,shortdesc:0 +msgid "Short Description" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,context:0 +#: field:ir.filters,context:0 +msgid "Context Value" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Hour 00->24: %(h24)s" +msgstr "" + +#. module: base +#: field:ir.cron,nextcall:0 +msgid "Next Execution Date" +msgstr "" + +#. module: base +#: help:multi_company.default,field_id:0 +msgid "Select field property" +msgstr "" + +#. module: base +#: field:res.request.history,date_sent:0 +msgid "Date sent" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Month: %(month)s" +msgstr "" + +#. module: base +#: field:ir.actions.act_window.view,sequence:0 +#: field:ir.actions.server,sequence:0 +#: field:ir.actions.todo,sequence:0 +#: view:ir.cron:0 +#: view:ir.sequence:0 +#: field:ir.ui.menu,sequence:0 +#: view:ir.ui.view:0 +#: field:ir.ui.view,priority:0 +#: field:ir.ui.view_sc,sequence:0 +#: field:multi_company.default,sequence:0 +#: field:res.partner.bank,sequence:0 +#: field:res.widget.user,sequence:0 +#: field:wizard.ir.model.menu.create.line,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: base +#: model:res.country,name:base.tn +msgid "Tunisia" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_mrp_root +msgid "Manufacturing" +msgstr "" + +#. module: base +#: model:res.country,name:base.km +msgid "Comoros" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_server_action +#: view:ir.actions.server:0 +#: model:ir.ui.menu,name:base.menu_server_action +msgid "Server Actions" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Cancel Install" +msgstr "" + +#. module: base +#: field:ir.model.fields,selection:0 +msgid "Selection Options" +msgstr "" + +#. module: base +#: field:res.partner.category,parent_right:0 +msgid "Right parent" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "Legends for Date and Time Formats" +msgstr "" + +#. module: base +#: selection:ir.actions.server,state:0 +msgid "Copy Object" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:581 +#, python-format +msgid "" +"Group(s) cannot be deleted, because some user(s) still belong to them: %s !" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_country_state +#: model:ir.ui.menu,name:base.menu_country_state_partner +msgid "Fed. States" +msgstr "" + +#. module: base +#: view:ir.model:0 +#: view:res.groups:0 +msgid "Access Rules" +msgstr "" + +#. module: base +#: field:ir.default,ref_table:0 +msgid "Table Ref." +msgstr "" + +#. module: base +#: field:ir.actions.act_window,res_model:0 +#: field:ir.actions.report.xml,model:0 +#: field:ir.actions.server,model_id:0 +#: field:ir.actions.wizard,model:0 +#: field:ir.cron,model:0 +#: field:ir.default,field_tbl:0 +#: field:ir.filters,model_id:0 +#: field:ir.model,model:0 +#: view:ir.model.access:0 +#: field:ir.model.access,model_id:0 +#: view:ir.model.data:0 +#: field:ir.model.data,model:0 +#: view:ir.model.fields:0 +#: view:ir.rule:0 +#: field:ir.rule,model_id:0 +#: selection:ir.translation,type:0 +#: view:ir.ui.view:0 +#: field:ir.ui.view,model:0 +#: view:ir.values:0 +#: field:ir.values,model_id:0 +#: field:multi_company.default,object_id:0 +#: field:res.log,res_model:0 +#: field:res.request.link,object:0 +#: field:workflow.triggers,model:0 +msgid "Object" +msgstr "" + +#. module: base +#: code:addons/osv.py:151 +#, python-format +msgid "" +"\n" +"\n" +"[object with reference: %s - %s]" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_default +msgid "ir.default" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Minute: %(min)s" +msgstr "" + +#. module: base +#: view:base.update.translations:0 +#: model:ir.actions.act_window,name:base.action_wizard_update_translations +#: model:ir.ui.menu,name:base.menu_wizard_update_translations +msgid "Synchronize Translations" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.next_id_10 +msgid "Scheduler" +msgstr "" + +#. module: base +#: help:ir.cron,numbercall:0 +msgid "" +"Number of time the function is called,\n" +"a negative number indicates no limit" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:331 +#, python-format +msgid "" +"Changing the type of a column is not yet supported. Please drop it and " +"create it again!" +msgstr "" + +#. module: base +#: field:ir.ui.view_sc,user_id:0 +msgid "User Ref." +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:580 +#, python-format +msgid "Warning !" +msgstr "" + +#. module: base +#: model:res.widget,title:base.google_maps_widget +msgid "Google Maps" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_base_config +#: model:ir.ui.menu,name:base.menu_config +#: model:ir.ui.menu,name:base.menu_event_config +#: model:ir.ui.menu,name:base.menu_lunch_survey_root +#: model:ir.ui.menu,name:base.menu_marketing_config_association +#: model:ir.ui.menu,name:base.menu_marketing_config_root +#: view:res.company:0 +msgid "Configuration" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_publisher_warranty_contract_wizard +msgid "publisher_warranty.contract.wizard" +msgstr "" + +#. module: base +#: field:ir.actions.server,expression:0 +msgid "Loop Expression" +msgstr "" + +#. module: base +#: field:publisher_warranty.contract,date_start:0 +msgid "Starting Date" +msgstr "" + +#. module: base +#: help:res.partner,website:0 +msgid "Website of Partner" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_5 +msgid "Gold Partner" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_partner +#: field:res.company,partner_id:0 +#: view:res.partner.address:0 +#: field:res.partner.bank,partner_id:0 +#: field:res.partner.event,partner_id:0 +#: selection:res.partner.title,domain:0 +#: model:res.request.link,name:base.req_link_partner +msgid "Partner" +msgstr "" + +#. module: base +#: model:res.country,name:base.tr +msgid "Turkey" +msgstr "" + +#. module: base +#: model:res.country,name:base.fk +msgid "Falkland Islands" +msgstr "" + +#. module: base +#: model:res.country,name:base.lb +msgid "Lebanon" +msgstr "" + +#. module: base +#: view:ir.actions.report.xml:0 +#: field:ir.actions.report.xml,report_type:0 +msgid "Report Type" +msgstr "" + +#. module: base +#: field:ir.actions.todo,state:0 +#: view:ir.module.module:0 +#: field:ir.module.module,state:0 +#: field:ir.module.module.dependency,state:0 +#: field:publisher_warranty.contract,state:0 +#: field:res.bank,state:0 +#: view:res.country.state:0 +#: field:res.partner.bank,state_id:0 +#: view:res.request:0 +#: field:res.request,state:0 +#: field:workflow.instance,state:0 +#: field:workflow.workitem,state:0 +msgid "State" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Galician / Galego" +msgstr "" + +#. module: base +#: model:res.country,name:base.no +msgid "Norway" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "4. %b, %B ==> Dec, December" +msgstr "" + +#. module: base +#: view:base.language.install:0 +#: model:ir.ui.menu,name:base.menu_view_base_language_install +msgid "Load an Official Translation" +msgstr "" + +#. module: base +#: view:res.currency:0 +msgid "Miscelleanous" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_10 +msgid "Open Source Service Company" +msgstr "" + +#. module: base +#: model:res.country,name:base.kg +msgid "Kyrgyz Republic (Kyrgyzstan)" +msgstr "" + +#. module: base +#: selection:res.request,state:0 +msgid "waiting" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,report_file:0 +msgid "Report file" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_workflow_triggers +msgid "workflow.triggers" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:62 +#, python-format +msgid "Invalid search criterions" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +msgid "Created" +msgstr "" + +#. module: base +#: help:ir.actions.wizard,multi:0 +msgid "" +"If set to true, the wizard will not be displayed on the right toolbar of a " +"form view." +msgstr "" + +#. module: base +#: view:base.language.import:0 +msgid "- type,name,res_id,src,value" +msgstr "" + +#. module: base +#: model:res.country,name:base.hm +msgid "Heard and McDonald Islands" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,view_id:0 +msgid "View Ref." +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "Selection" +msgstr "" + +#. module: base +#: field:res.company,rml_header1:0 +msgid "Report Header" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,type:0 +#: field:ir.actions.act_window_close,type:0 +#: field:ir.actions.actions,type:0 +#: field:ir.actions.report.xml,type:0 +#: view:ir.actions.server:0 +#: field:ir.actions.server,state:0 +#: field:ir.actions.server,type:0 +#: field:ir.actions.url,type:0 +#: field:ir.actions.wizard,type:0 +msgid "Action Type" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:268 +#, python-format +msgid "" +"You try to install module '%s' that depends on module '%s'.\n" +"But the latter module is not available in your system." +msgstr "" + +#. module: base +#: view:base.language.import:0 +#: model:ir.actions.act_window,name:base.action_view_base_import_language +#: model:ir.ui.menu,name:base.menu_view_base_import_language +msgid "Import Translation" +msgstr "" + +#. module: base +#: field:res.partner.bank.type,field_ids:0 +msgid "Type fields" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +#: field:ir.module.module,category_id:0 +msgid "Category" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +#: selection:ir.attachment,type:0 +#: selection:ir.property,type:0 +msgid "Binary" +msgstr "" + +#. module: base +#: field:ir.actions.server,sms:0 +#: selection:ir.actions.server,state:0 +msgid "SMS" +msgstr "" + +#. module: base +#: model:res.country,name:base.cr +msgid "Costa Rica" +msgstr "" + +#. module: base +#: view:workflow.activity:0 +msgid "Conditions" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_other_form +msgid "Other Partners" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_currency_form +#: model:ir.ui.menu,name:base.menu_action_currency_form +#: view:res.currency:0 +msgid "Currencies" +msgstr "" + +#. module: base +#: sql_constraint:res.groups:0 +msgid "The name of the group must be unique !" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Hour 00->12: %(h12)s" +msgstr "" + +#. module: base +#: help:res.partner.address,active:0 +msgid "Uncheck the active field to hide the contact." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_widget_wizard +msgid "Add a widget for User" +msgstr "" + +#. module: base +#: model:res.country,name:base.dk +msgid "Denmark" +msgstr "" + +#. module: base +#: field:res.country,code:0 +msgid "Country Code" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_workflow_instance +msgid "workflow.instance" +msgstr "" + +#. module: base +#: code:addons/orm.py:278 +#, python-format +msgid "Unknown attribute %s in %s " +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "10. %S ==> 20" +msgstr "" + +#. module: base +#: code:addons/fields.py:106 +#, python-format +msgid "undefined get method !" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Norwegian Bokmål / Norsk bokmål" +msgstr "" + +#. module: base +#: help:res.config.users,new_password:0 +#: help:res.users,new_password:0 +msgid "" +"Only specify a value if you want to change the user password. This user will " +"have to logout and login again!" +msgstr "" + +#. module: base +#: model:res.partner.title,name:base.res_partner_title_madam +msgid "Madam" +msgstr "" + +#. module: base +#: model:res.country,name:base.ee +msgid "Estonia" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.dashboard +msgid "Dashboards" +msgstr "" + +#. module: base +#: help:ir.attachment,type:0 +msgid "Binary File or external URL" +msgstr "" + +#. module: base +#: field:res.config.users,new_password:0 +#: field:res.users,new_password:0 +msgid "Change password" +msgstr "" + +#. module: base +#: model:res.country,name:base.nl +msgid "Netherlands" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.next_id_4 +msgid "Low Level Objects" +msgstr "" + +#. module: base +#: view:res.company:0 +msgid "Your Logo - Use a size of about 450x150 pixels." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_values +msgid "ir.values" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Occitan (FR, post 1500) / Occitan" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.open_module_tree +msgid "" +"You can install new modules in order to activate new features, menu, reports " +"or data in your OpenERP instance. To install some modules, click on the " +"button \"Schedule for Installation\" from the form view, then click on " +"\"Apply Scheduled Upgrades\" to migrate your system." +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_emails +#: model:ir.ui.menu,name:base.menu_mail_gateway +msgid "Emails" +msgstr "" + +#. module: base +#: model:res.country,name:base.cd +msgid "Congo, The Democratic Republic of the" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Malayalam / മലയാളം" +msgstr "" + +#. module: base +#: view:res.request:0 +#: field:res.request,body:0 +#: field:res.request.history,req_id:0 +msgid "Request" +msgstr "" + +#. module: base +#: model:res.country,name:base.jp +msgid "Japan" +msgstr "" + +#. module: base +#: field:ir.cron,numbercall:0 +msgid "Number of Calls" +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +#: field:base.module.upgrade,module_info:0 +msgid "Modules to update" +msgstr "" + +#. module: base +#: help:ir.actions.server,sequence:0 +msgid "" +"Important when you deal with multiple actions, the execution order will be " +"decided based on this, low number is higher priority." +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,header:0 +msgid "Add RML header" +msgstr "" + +#. module: base +#: model:res.country,name:base.gr +msgid "Greece" +msgstr "" + +#. module: base +#: field:res.request,trigger_date:0 +msgid "Trigger Date" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Croatian / hrvatski jezik" +msgstr "" + +#. module: base +#: field:base.language.install,overwrite:0 +msgid "Overwrite Existing Terms" +msgstr "" + +#. module: base +#: help:ir.actions.server,code:0 +msgid "Python code to be executed" +msgstr "" + +#. module: base +#: sql_constraint:res.country:0 +msgid "The code of the country must be unique !" +msgstr "" + +#. module: base +#: selection:ir.module.module.dependency,state:0 +msgid "Uninstallable" +msgstr "" + +#. module: base +#: view:res.partner.category:0 +msgid "Partner Category" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +#: selection:ir.actions.server,state:0 +msgid "Trigger" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_base_module_update +msgid "Update Module" +msgstr "" + +#. module: base +#: view:ir.model.fields:0 +#: field:ir.model.fields,translate:0 +msgid "Translate" +msgstr "" + +#. module: base +#: field:res.request.history,body:0 +msgid "Body" +msgstr "" + +#. module: base +#: view:partner.wizard.spam:0 +msgid "Send Email" +msgstr "" + +#. module: base +#: field:res.config.users,menu_id:0 +#: field:res.users,menu_id:0 +msgid "Menu Action" +msgstr "" + +#. module: base +#: help:ir.model.fields,selection:0 +msgid "" +"List of options for a selection field, specified as a Python expression " +"defining a list of (key, label) pairs. For example: " +"[('blue','Blue'),('yellow','Yellow')]" +msgstr "" + +#. module: base +#: selection:base.language.export,state:0 +msgid "choose" +msgstr "" + +#. module: base +#: help:ir.model,osv_memory:0 +msgid "" +"Indicates whether this object model lives in memory only, i.e. is not " +"persisted (osv.osv_memory)" +msgstr "" + +#. module: base +#: field:res.partner,child_ids:0 +#: field:res.request,ref_partner_id:0 +msgid "Partner Ref." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_supplier_form +#: model:ir.ui.menu,name:base.menu_procurement_management_supplier_name +#: view:res.partner:0 +msgid "Suppliers" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract.wizard:0 +msgid "Register" +msgstr "" + +#. module: base +#: field:res.request,ref_doc2:0 +msgid "Document Ref 2" +msgstr "" + +#. module: base +#: field:res.request,ref_doc1:0 +msgid "Document Ref 1" +msgstr "" + +#. module: base +#: model:res.country,name:base.ga +msgid "Gabon" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_model_data +msgid "ir.model.data" +msgstr "" + +#. module: base +#: view:ir.model:0 +#: view:ir.rule:0 +#: view:res.groups:0 +msgid "Access Rights" +msgstr "" + +#. module: base +#: model:res.country,name:base.gl +msgid "Greenland" +msgstr "" + +#. module: base +#: field:res.partner.bank,acc_number:0 +msgid "Account Number" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "1. %c ==> Fri Dec 5 18:25:20 2008" +msgstr "" + +#. module: base +#: model:res.country,name:base.nc +msgid "New Caledonia (French)" +msgstr "" + +#. module: base +#: model:res.country,name:base.cy +msgid "Cyprus" +msgstr "" + +#. module: base +#: view:base.module.import:0 +msgid "" +"This wizard helps you add a new language to you OpenERP system. After " +"loading a new language it becomes available as default interface language " +"for users and partners." +msgstr "" + +#. module: base +#: field:ir.actions.server,subject:0 +#: field:partner.wizard.spam,subject:0 +#: field:res.request,name:0 +msgid "Subject" +msgstr "" + +#. module: base +#: field:res.request,act_from:0 +#: field:res.request.history,act_from:0 +msgid "From" +msgstr "" + +#. module: base +#: view:res.users:0 +msgid "Preferences" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_consumers0 +msgid "Consumers" +msgstr "" + +#. module: base +#: view:res.config:0 +#: wizard_button:server.action.create,init,step_1:0 +msgid "Next" +msgstr "" + +#. module: base +#: help:ir.cron,function:0 +msgid "" +"Name of the method to be called on the object when this scheduler is " +"executed." +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:219 +#, python-format +msgid "" +"The Selection Options expression is must be in the [('key','Label'), ...] " +"format!" +msgstr "" + +#. module: base +#: view:ir.actions.report.xml:0 +msgid "Miscellaneous" +msgstr "" + +#. module: base +#: model:res.country,name:base.cn +msgid "China" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:516 +#, python-format +msgid "" +"--\n" +"%(name)s %(email)s\n" +msgstr "" + +#. module: base +#: model:res.country,name:base.eh +msgid "Western Sahara" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_workflow +msgid "workflow" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_res_company_form +msgid "" +"Create and manage the companies that will be managed by OpenERP from here. " +"Shops or subsidiaries can be created and maintained from here." +msgstr "" + +#. module: base +#: model:res.country,name:base.id +msgid "Indonesia" +msgstr "" + +#. module: base +#: view:base.update.translations:0 +msgid "" +"This wizard will detect new terms to translate in the application, so that " +"you can then add translations manually or perform a complete export (as a " +"template for a new language example)." +msgstr "" + +#. module: base +#: help:multi_company.default,expression:0 +msgid "" +"Expression, must be True to match\n" +"use context.get or user (browse)" +msgstr "" + +#. module: base +#: model:res.country,name:base.bg +msgid "Bulgaria" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract.wizard:0 +msgid "Publisher warranty contract successfully registered!" +msgstr "" + +#. module: base +#: model:res.country,name:base.ao +msgid "Angola" +msgstr "" + +#. module: base +#: model:res.country,name:base.tf +msgid "French Southern Territories" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_currency +#: field:res.company,currency_id:0 +#: field:res.company,currency_ids:0 +#: view:res.currency:0 +#: field:res.currency,name:0 +#: field:res.currency.rate,currency_id:0 +msgid "Currency" +msgstr "" + +#. module: base +#: field:res.partner.canal,name:0 +msgid "Channel Name" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "5. %y, %Y ==> 08, 2008" +msgstr "" + +#. module: base +#: model:res.partner.title,shortcut:base.res_partner_title_ltd +msgid "ltd" +msgstr "" + +#. module: base +#: field:ir.values,res_id:0 +#: field:res.log,res_id:0 +msgid "Object ID" +msgstr "" + +#. module: base +#: view:res.company:0 +msgid "Landscape" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_administration +msgid "Administration" +msgstr "" + +#. module: base +#: view:base.module.update:0 +msgid "Click on Update below to start the process..." +msgstr "" + +#. module: base +#: model:res.country,name:base.ir +msgid "Iran" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.res_widget_user_act_window +#: model:ir.ui.menu,name:base.menu_res_widget_user_act_window +msgid "Widgets per User" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Slovak / Slovenský jazyk" +msgstr "" + +#. module: base +#: field:base.language.export,state:0 +#: field:ir.ui.menu,icon_pict:0 +#: field:publisher_warranty.contract.wizard,state:0 +msgid "unknown" +msgstr "" + +#. module: base +#: field:res.currency,symbol:0 +msgid "Symbol" +msgstr "" + +#. module: base +#: help:res.config.users,login:0 +#: help:res.users,login:0 +msgid "Used to log into the system" +msgstr "" + +#. module: base +#: view:base.update.translations:0 +msgid "Synchronize Translation" +msgstr "" + +#. module: base +#: field:ir.ui.view_sc,res_id:0 +msgid "Resource Ref." +msgstr "" + +#. module: base +#: model:res.country,name:base.ki +msgid "Kiribati" +msgstr "" + +#. module: base +#: model:res.country,name:base.iq +msgid "Iraq" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_association +msgid "Association" +msgstr "" + +#. module: base +#: model:res.country,name:base.cl +msgid "Chile" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_address_book +#: model:ir.ui.menu,name:base.menu_config_address_book +#: model:ir.ui.menu,name:base.menu_procurement_management_supplier +msgid "Address Book" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_sequence_type +msgid "ir.sequence.type" +msgstr "" + +#. module: base +#: selection:base.language.export,format:0 +msgid "CSV File" +msgstr "" + +#. module: base +#: field:res.company,account_no:0 +msgid "Account No." +msgstr "" + +#. module: base +#: code:addons/base/res/res_lang.py:157 +#, python-format +msgid "Base Language 'en_US' can not be deleted !" +msgstr "" + +#. module: base +#: selection:ir.model,state:0 +msgid "Base Object" +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "Dependencies :" +msgstr "" + +#. module: base +#: field:ir.model.fields,field_description:0 +msgid "Field Label" +msgstr "" + +#. module: base +#: model:res.country,name:base.dj +msgid "Djibouti" +msgstr "" + +#. module: base +#: field:ir.translation,value:0 +msgid "Translation Value" +msgstr "" + +#. module: base +#: model:res.country,name:base.ag +msgid "Antigua and Barbuda" +msgstr "" + +#. module: base +#: code:addons/orm.py:3166 +#, python-format +msgid "" +"Operation prohibited by access rules, or performed on an already deleted " +"document (Operation: %s, Document type: %s)." +msgstr "" + +#. module: base +#: model:res.country,name:base.zr +msgid "Zaire" +msgstr "" + +#. module: base +#: field:ir.model.data,res_id:0 +#: field:ir.translation,res_id:0 +#: field:workflow.instance,res_id:0 +#: field:workflow.triggers,res_id:0 +msgid "Resource ID" +msgstr "" + +#. module: base +#: view:ir.cron:0 +#: field:ir.model,info:0 +msgid "Information" +msgstr "" + +#. module: base +#: view:res.widget.user:0 +msgid "User Widgets" +msgstr "" + +#. module: base +#: view:base.module.update:0 +msgid "Update Module List" +msgstr "" + +#. module: base +#: selection:res.partner.address,type:0 +msgid "Other" +msgstr "" + +#. module: base +#: view:res.request:0 +msgid "Reply" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Turkish / Türkçe" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_workflow_activity_form +#: model:ir.ui.menu,name:base.menu_workflow_activity +#: view:workflow:0 +#: field:workflow,activities:0 +msgid "Activities" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,auto_refresh:0 +msgid "Auto-Refresh" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:62 +#, python-format +msgid "The osv_memory field can only be compared with = and != operator." +msgstr "" + +#. module: base +#: selection:ir.ui.view,type:0 +msgid "Diagram" +msgstr "" + +#. module: base +#: help:multi_company.default,name:0 +msgid "Name it to easily find a record" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.grant_menu_access +#: model:ir.ui.menu,name:base.menu_grant_menu_access +msgid "Menu Items" +msgstr "" + +#. module: base +#: constraint:ir.rule:0 +msgid "Rules are not supported for osv_memory objects !" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_event_association +#: model:ir.ui.menu,name:base.menu_event_main +msgid "Events Organisation" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_sequence_actions +#: model:ir.ui.menu,name:base.menu_custom_action +#: model:ir.ui.menu,name:base.menu_ir_sequence_actions +#: model:ir.ui.menu,name:base.next_id_6 +#: view:workflow.activity:0 +msgid "Actions" +msgstr "" + +#. module: base +#: selection:res.request,priority:0 +msgid "High" +msgstr "" + +#. module: base +#: field:ir.exports.line,export_id:0 +msgid "Export" +msgstr "" + +#. module: base +#: model:res.country,name:base.hr +msgid "Croatia" +msgstr "" + +#. module: base +#: help:res.bank,bic:0 +msgid "Bank Identifier Code" +msgstr "" + +#. module: base +#: model:res.country,name:base.tm +msgid "Turkmenistan" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_actions.py:597 +#: code:addons/base/ir/ir_actions.py:629 +#: code:addons/base/ir/ir_actions.py:713 +#: code:addons/base/ir/ir_actions.py:716 +#: code:addons/base/ir/ir_model.py:114 +#: code:addons/base/ir/ir_model.py:204 +#: code:addons/base/ir/ir_model.py:218 +#: code:addons/base/ir/ir_model.py:232 +#: code:addons/base/ir/ir_model.py:250 +#: code:addons/base/ir/ir_model.py:255 +#: code:addons/base/ir/ir_model.py:258 +#: code:addons/base/module/module.py:215 +#: code:addons/base/module/module.py:258 +#: code:addons/base/module/module.py:262 +#: code:addons/base/module/module.py:268 +#: code:addons/base/module/module.py:303 +#: code:addons/base/module/module.py:321 +#: code:addons/base/module/module.py:336 +#: code:addons/base/module/module.py:429 +#: code:addons/base/module/module.py:531 +#: code:addons/base/publisher_warranty/publisher_warranty.py:163 +#: code:addons/base/publisher_warranty/publisher_warranty.py:281 +#: code:addons/base/res/res_currency.py:100 +#: code:addons/base/res/res_user.py:57 +#: code:addons/base/res/res_user.py:66 +#: code:addons/custom.py:558 +#: code:addons/orm.py:3199 +#, python-format +msgid "Error" +msgstr "" + +#. module: base +#: model:res.country,name:base.pm +msgid "Saint Pierre and Miquelon" +msgstr "" + +#. module: base +#: help:ir.actions.report.xml,header:0 +msgid "Add or not the coporate RML header" +msgstr "" + +#. module: base +#: help:workflow.transition,act_to:0 +msgid "The destination activity." +msgstr "" + +#. module: base +#: view:base.module.update:0 +#: view:base.update.translations:0 +msgid "Update" +msgstr "" + +#. module: base +#: model:ir.actions.report.xml,name:base.ir_module_reference_print +msgid "Technical guide" +msgstr "" + +#. module: base +#: model:res.country,name:base.tz +msgid "Tanzania" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Danish / Dansk" +msgstr "" + +#. module: base +#: selection:ir.model.fields,select_level:0 +msgid "Advanced Search (deprecated)" +msgstr "" + +#. module: base +#: model:res.country,name:base.cx +msgid "Christmas Island" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Other Actions Configuration" +msgstr "" + +#. module: base +#: view:res.config.installer:0 +msgid "Install Modules" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.res_partner_canal-act +#: model:ir.model,name:base.model_res_partner_canal +#: model:ir.ui.menu,name:base.menu_res_partner_canal-act +#: view:res.partner.canal:0 +msgid "Channels" +msgstr "" + +#. module: base +#: view:ir.ui.view:0 +msgid "Extra Info" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.act_values_form_action +#: model:ir.ui.menu,name:base.menu_values_form_action +msgid "Client Events" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Schedule for Installation" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_partner_wizard_ean_check +msgid "Ean Check" +msgstr "" + +#. module: base +#: sql_constraint:res.config.users:0 +#: sql_constraint:res.users:0 +msgid "You can not have two users with the same login !" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_multi_company_default +msgid "Default multi company" +msgstr "" + +#. module: base +#: view:res.request:0 +msgid "Send" +msgstr "" + +#. module: base +#: field:res.config.users,menu_tips:0 +#: field:res.users,menu_tips:0 +msgid "Menu Tips" +msgstr "" + +#. module: base +#: field:ir.translation,src:0 +msgid "Source" +msgstr "" + +#. module: base +#: help:res.partner.address,partner_id:0 +msgid "Keep empty for a private address, not related to partner." +msgstr "" + +#. module: base +#: model:res.country,name:base.vu +msgid "Vanuatu" +msgstr "" + +#. module: base +#: view:res.company:0 +msgid "Internal Header/Footer" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_export_language.py:59 +#, python-format +msgid "" +"Save this document to a .tgz file. This archive containt UTF-8 %s files and " +"may be uploaded to launchpad." +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +msgid "Start configuration" +msgstr "" + +#. module: base +#: view:base.language.export:0 +msgid "_Export" +msgstr "" + +#. module: base +#: field:base.language.install,state:0 +#: field:base.module.import,state:0 +#: field:base.module.update,state:0 +msgid "state" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Catalan / Català" +msgstr "" + +#. module: base +#: model:res.country,name:base.do +msgid "Dominican Republic" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Serbian (Cyrillic) / српски" +msgstr "" + +#. module: base +#: code:addons/orm.py:2161 +#, python-format +msgid "" +"Invalid group_by specification: \"%s\".\n" +"A group_by specification must be a list of valid fields." +msgstr "" + +#. module: base +#: model:res.country,name:base.sa +msgid "Saudi Arabia" +msgstr "" + +#. module: base +#: help:res.partner,supplier:0 +msgid "" +"Check this box if the partner is a supplier. If it's not checked, purchase " +"people will not see it when encoding a purchase order." +msgstr "" + +#. module: base +#: field:ir.model.fields,relation_field:0 +msgid "Relation Field" +msgstr "" + +#. module: base +#: view:res.partner.event:0 +msgid "Event Logs" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_module_configuration.py:37 +#, python-format +msgid "System Configuration done" +msgstr "" + +#. module: base +#: field:workflow.triggers,instance_id:0 +msgid "Destination Instance" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,multi:0 +#: field:ir.actions.wizard,multi:0 +msgid "Action on Multiple Doc." +msgstr "" + +#. module: base +#: view:base.language.export:0 +msgid "https://translations.launchpad.net/openobject" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,report_xml:0 +msgid "XML path" +msgstr "" + +#. module: base +#: selection:ir.actions.todo,restart:0 +msgid "On Skip" +msgstr "" + +#. module: base +#: model:res.country,name:base.gn +msgid "Guinea" +msgstr "" + +#. module: base +#: model:res.country,name:base.lu +msgid "Luxembourg" +msgstr "" + +#. module: base +#: help:ir.values,key2:0 +msgid "" +"The kind of action or button in the client side that will trigger the action." +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_ui_menu.py:285 +#, python-format +msgid "Error ! You can not create recursive Menu." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_publisher_warranty_contract_add_wizard +#: model:ir.ui.menu,name:base.menu_publisher_warranty_contract_add +#: view:publisher_warranty.contract.wizard:0 +msgid "Register a Contract" +msgstr "" + +#. module: base +#: view:ir.rule:0 +msgid "" +"3. If user belongs to several groups, the results from step 2 are combined " +"with logical OR operator" +msgstr "" + +#. module: base +#: code:addons/base/publisher_warranty/publisher_warranty.py:145 +#, python-format +msgid "Please check your publisher warranty contract name and validity." +msgstr "" + +#. module: base +#: model:res.country,name:base.sv +msgid "El Salvador" +msgstr "" + +#. module: base +#: field:res.bank,phone:0 +#: field:res.partner,phone:0 +#: field:res.partner.address,phone:0 +msgid "Phone" +msgstr "" + +#. module: base +#: field:ir.cron,active:0 +#: field:ir.sequence,active:0 +#: field:res.bank,active:0 +#: field:res.config.users,active:0 +#: field:res.currency,active:0 +#: field:res.lang,active:0 +#: field:res.partner,active:0 +#: field:res.partner.address,active:0 +#: field:res.partner.canal,active:0 +#: field:res.partner.category,active:0 +#: field:res.request,active:0 +#: field:res.users,active:0 +#: view:workflow.instance:0 +#: view:workflow.workitem:0 +msgid "Active" +msgstr "" + +#. module: base +#: model:res.country,name:base.th +msgid "Thailand" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_crm_config_lead +msgid "Leads & Opportunities" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Romanian / română" +msgstr "" + +#. module: base +#: view:res.log:0 +msgid "System Logs" +msgstr "" + +#. module: base +#: selection:workflow.activity,join_mode:0 +#: selection:workflow.activity,split_mode:0 +msgid "And" +msgstr "" + +#. module: base +#: field:ir.model.fields,relation:0 +msgid "Object Relation" +msgstr "" + +#. module: base +#: view:ir.rule:0 +#: view:res.partner:0 +msgid "General" +msgstr "" + +#. module: base +#: model:res.country,name:base.uz +msgid "Uzbekistan" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_act_window +#: selection:ir.ui.menu,action:0 +msgid "ir.actions.act_window" +msgstr "" + +#. module: base +#: field:ir.rule,perm_create:0 +msgid "Apply For Create" +msgstr "" + +#. module: base +#: model:res.country,name:base.vi +msgid "Virgin Islands (USA)" +msgstr "" + +#. module: base +#: model:res.country,name:base.tw +msgid "Taiwan" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_currency_rate +msgid "Currency Rate" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.grant_menu_access +msgid "" +"Manage and customize the items available and displayed in your OpenERP " +"system menu. You can delete an item by clicking on the box at the beginning " +"of each line and then delete it through the button that appeared. Items can " +"be assigned to specific groups in order to make them accessible to some " +"users within the system." +msgstr "" + +#. module: base +#: field:ir.ui.view,field_parent:0 +msgid "Child Field" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,usage:0 +#: field:ir.actions.act_window_close,usage:0 +#: field:ir.actions.actions,usage:0 +#: field:ir.actions.report.xml,usage:0 +#: field:ir.actions.server,usage:0 +#: field:ir.actions.wizard,usage:0 +msgid "Action Usage" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_workflow_workitem +msgid "workflow.workitem" +msgstr "" + +#. module: base +#: selection:ir.module.module,state:0 +msgid "Not Installable" +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "View :" +msgstr "" + +#. module: base +#: field:ir.model.fields,view_load:0 +msgid "View Auto-Load" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:232 +#, python-format +msgid "You cannot remove the field '%s' !" +msgstr "" + +#. module: base +#: field:ir.exports,resource:0 +#: view:ir.property:0 +#: field:ir.property,res_id:0 +msgid "Resource" +msgstr "" + +#. module: base +#: field:ir.ui.menu,web_icon:0 +msgid "Web Icon File" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Persian / فارس" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +msgid "View Ordering" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_module_upgrade.py:95 +#, python-format +msgid "Unmet dependency !" +msgstr "" + +#. module: base +#: view:base.language.import:0 +msgid "" +"Supported file formats: *.csv (Comma-separated values) or *.po (GetText " +"Portable Objects)" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:487 +#, python-format +msgid "" +"You can not delete this document (%s) ! Be sure your user belongs to one of " +"these groups: %s." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_base_module_configuration +msgid "base.module.configuration" +msgstr "" + +#. module: base +#: field:base.language.export,name:0 +#: field:ir.attachment,datas_fname:0 +msgid "Filename" +msgstr "" + +#. module: base +#: field:ir.model,access_ids:0 +#: view:ir.model.access:0 +msgid "Access" +msgstr "" + +#. module: base +#: model:res.country,name:base.sk +msgid "Slovak Republic" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.publisher_warranty +msgid "Publisher Warranty" +msgstr "" + +#. module: base +#: model:res.country,name:base.aw +msgid "Aruba" +msgstr "" + +#. module: base +#: model:res.country,name:base.ar +msgid "Argentina" +msgstr "" + +#. module: base +#: field:res.groups,name:0 +msgid "Group Name" +msgstr "" + +#. module: base +#: model:res.country,name:base.bh +msgid "Bahrain" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_12 +msgid "Segmentation" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +#: field:ir.attachment,company_id:0 +#: field:ir.default,company_id:0 +#: field:ir.property,company_id:0 +#: field:ir.sequence,company_id:0 +#: field:ir.values,company_id:0 +#: view:res.company:0 +#: field:res.config.users,company_id:0 +#: field:res.currency,company_id:0 +#: field:res.partner,company_id:0 +#: field:res.partner.address,company_id:0 +#: view:res.users:0 +#: field:res.users,company_id:0 +msgid "Company" +msgstr "" + +#. module: base +#: view:res.users:0 +msgid "Email & Signature" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract:0 +msgid "Publisher Warranty Contract" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Bulgarian / български език" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_aftersale +msgid "After-Sale Services" +msgstr "" + +#. module: base +#: view:ir.actions.todo:0 +msgid "Launch" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,limit:0 +msgid "Limit" +msgstr "" + +#. module: base +#: help:ir.actions.server,wkf_model_id:0 +msgid "Workflow to be executed on this model." +msgstr "" + +#. module: base +#: model:res.country,name:base.jm +msgid "Jamaica" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_partner_category_form +msgid "" +"Manage the partner categories in order to better classify them for tracking " +"and analysis purposes. A partner may belong to several categories and " +"categories have a hierarchy structure: a partner belonging to a category " +"also belong to his parent category." +msgstr "" + +#. module: base +#: model:res.country,name:base.az +msgid "Azerbaijan" +msgstr "" + +#. module: base +#: code:addons/base/res/partner/partner.py:250 +#, python-format +msgid "Warning" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Arabic / الْعَرَبيّة" +msgstr "" + +#. module: base +#: model:res.country,name:base.vg +msgid "Virgin Islands (British)" +msgstr "" + +#. module: base +#: view:ir.property:0 +#: model:ir.ui.menu,name:base.next_id_15 +msgid "Parameters" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Czech / Čeština" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Trigger Configuration" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_partner_supplier_form +msgid "" +"You can access all information regarding your suppliers from the supplier " +"form: accounting data, history of emails, meetings, purchases, etc. You can " +"uncheck the 'Suppliers' filter button in order to search in all your " +"partners, including customers and prospects." +msgstr "" + +#. module: base +#: model:res.country,name:base.rw +msgid "Rwanda" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Day of the week (0:Monday): %(weekday)s" +msgstr "" + +#. module: base +#: model:res.country,name:base.ck +msgid "Cook Islands" +msgstr "" + +#. module: base +#: field:ir.model.data,noupdate:0 +msgid "Non Updatable" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Klingon" +msgstr "" + +#. module: base +#: model:res.country,name:base.sg +msgid "Singapore" +msgstr "" + +#. module: base +#: selection:ir.actions.act_window,target:0 +msgid "Current Window" +msgstr "" + +#. module: base +#: view:ir.values:0 +msgid "Action Source" +msgstr "" + +#. module: base +#: view:res.config.view:0 +msgid "" +"If you use OpenERP for the first time we strongly advise you to select the " +"simplified interface, which has less features but is easier. You can always " +"switch later from the user preferences." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_country +#: field:res.bank,country:0 +#: view:res.country:0 +#: field:res.country.state,country_id:0 +#: field:res.partner,country:0 +#: view:res.partner.address:0 +#: field:res.partner.address,country_id:0 +#: field:res.partner.bank,country_id:0 +msgid "Country" +msgstr "" + +#. module: base +#: field:ir.model.fields,complete_name:0 +#: field:ir.ui.menu,complete_name:0 +msgid "Complete Name" +msgstr "" + +#. module: base +#: field:ir.values,object:0 +msgid "Is Object" +msgstr "" + +#. module: base +#: view:ir.rule:0 +msgid "" +"1. Global rules are combined together with a logical AND operator, and with " +"the result of the following steps" +msgstr "" + +#. module: base +#: field:res.partner.category,name:0 +msgid "Category Name" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_15 +msgid "IT sector" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +msgid "Select Groups" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%X - Appropriate time representation." +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (SV) / Español (SV)" +msgstr "" + +#. module: base +#: help:res.lang,grouping:0 +msgid "" +"The Separator Format should be like [,n] where 0 < n :starting from Unit " +"digit.-1 will end the separation. e.g. [3,2,-1] will represent 106500 to be " +"1,06,500;[1,2,-1] will represent it to be 106,50,0;[3] will represent it as " +"106,500. Provided ',' as the thousand separator in each case." +msgstr "" + +#. module: base +#: view:res.company:0 +msgid "Portrait" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:317 +#, python-format +msgid "Can only rename one column at a time!" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "Wizard Button" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "Report/Template" +msgstr "" + +#. module: base +#: selection:ir.actions.act_window.view,view_mode:0 +#: selection:ir.ui.view,type:0 +#: selection:wizard.ir.model.menu.create.line,view_type:0 +msgid "Graph" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_server +#: selection:ir.ui.menu,action:0 +msgid "ir.actions.server" +msgstr "" + +#. module: base +#: field:ir.actions.configuration.wizard,progress:0 +#: field:res.config,progress:0 +#: field:res.config.installer,progress:0 +#: field:res.config.users,progress:0 +#: field:res.config.view,progress:0 +msgid "Configuration Progress" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.act_ir_actions_todo_form +#: model:ir.ui.menu,name:base.menu_ir_actions_todo_form +#: model:ir.ui.menu,name:base.next_id_11 +msgid "Configuration Wizards" +msgstr "" + +#. module: base +#: field:res.lang,code:0 +msgid "Locale Code" +msgstr "" + +#. module: base +#: field:workflow.activity,split_mode:0 +msgid "Split Mode" +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +msgid "Note that this operation might take a few minutes." +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_localisation +msgid "Localisation" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Action to Launch" +msgstr "" + +#. module: base +#: view:ir.cron:0 +msgid "Execution" +msgstr "" + +#. module: base +#: field:ir.actions.server,condition:0 +#: field:workflow.transition,condition:0 +msgid "Condition" +msgstr "" + +#. module: base +#: help:ir.values,model_id:0 +msgid "This field is not used, it only helps you to select a good model." +msgstr "" + +#. module: base +#: field:ir.ui.view,name:0 +msgid "View Name" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Italian / Italiano" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,attachment:0 +msgid "Save As Attachment Prefix" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "" +"Only one client action will be executed, last client action will be " +"considered in case of multiple client actions." +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%j - Day of the year [001,366]." +msgstr "" + +#. module: base +#: field:ir.actions.server,mobile:0 +msgid "Mobile No" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_by_category +#: model:ir.actions.act_window,name:base.action_partner_category_form +#: model:ir.model,name:base.model_res_partner_category +#: model:ir.ui.menu,name:base.menu_partner_category_form +#: view:res.partner.category:0 +msgid "Partner Categories" +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +msgid "System Update" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "Wizard Field" +msgstr "" + +#. module: base +#: help:ir.sequence,prefix:0 +msgid "Prefix value of the record for the sequence" +msgstr "" + +#. module: base +#: model:res.country,name:base.sc +msgid "Seychelles" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_partner_bank +#: view:res.partner.bank:0 +msgid "Bank Accounts" +msgstr "" + +#. module: base +#: model:res.country,name:base.sl +msgid "Sierra Leone" +msgstr "" + +#. module: base +#: view:res.company:0 +#: view:res.partner:0 +msgid "General Information" +msgstr "" + +#. module: base +#: model:res.country,name:base.tc +msgid "Turks and Caicos Islands" +msgstr "" + +#. module: base +#: field:res.partner.bank,owner_name:0 +msgid "Account Owner" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:256 +#, python-format +msgid "Company Switch Warning" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_res_widget_wizard +msgid "Homepage Widgets Management" +msgstr "" + +#. module: base +#: field:workflow,osv:0 +#: field:workflow.instance,res_type:0 +msgid "Resource Object" +msgstr "" + +#. module: base +#: help:ir.sequence,number_increment:0 +msgid "The next number of the sequence will be incremented by this number" +msgstr "" + +#. module: base +#: field:ir.cron,function:0 +#: field:res.partner.address,function:0 +#: selection:workflow.activity,kind:0 +msgid "Function" +msgstr "" + +#. module: base +#: view:res.widget:0 +msgid "Search Widget" +msgstr "" + +#. module: base +#: selection:ir.actions.todo,restart:0 +msgid "Never" +msgstr "" + +#. module: base +#: selection:res.partner.address,type:0 +msgid "Delivery" +msgstr "" + +#. module: base +#: model:res.partner.title,name:base.res_partner_title_pvt_ltd +#: model:res.partner.title,shortcut:base.res_partner_title_pvt_ltd +msgid "Corp." +msgstr "" + +#. module: base +#: model:res.country,name:base.gw +msgid "Guinea Bissau" +msgstr "" + +#. module: base +#: view:workflow.instance:0 +msgid "Workflow Instances" +msgstr "" + +#. module: base +#: code:addons/base/res/partner/partner.py:261 +#, python-format +msgid "Partners: " +msgstr "" + +#. module: base +#: model:res.country,name:base.kp +msgid "North Korea" +msgstr "" + +#. module: base +#: selection:ir.actions.server,state:0 +msgid "Create Object" +msgstr "" + +#. module: base +#: view:ir.filters:0 +#: field:res.log,context:0 +msgid "Context" +msgstr "" + +#. module: base +#: field:res.bank,bic:0 +msgid "BIC/Swift code" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_1 +msgid "Prospect" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Polish / Język polski" +msgstr "" + +#. module: base +#: field:ir.exports,name:0 +msgid "Export Name" +msgstr "" + +#. module: base +#: help:res.partner.address,type:0 +msgid "" +"Used to select automatically the right address according to the context in " +"sales and purchases documents." +msgstr "" + +#. module: base +#: model:res.country,name:base.lk +msgid "Sri Lanka" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Russian / русский язык" +msgstr "" diff --git a/openerp/addons/base/i18n/mk.po b/openerp/addons/base/i18n/mk.po new file mode 100644 index 00000000000..d81013e9dc3 --- /dev/null +++ b/openerp/addons/base/i18n/mk.po @@ -0,0 +1,9248 @@ +# Macedonian translation for openobject-server +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openobject-server package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-server\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-01-11 11:14+0000\n" +"PO-Revision-Date: 2011-05-06 11:49+0000\n" +"Last-Translator: martin \n" +"Language-Team: Macedonian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-05-07 06:01+0000\n" +"X-Generator: Launchpad (build 12959)\n" + +#. module: base +#: view:ir.filters:0 +#: field:ir.model.fields,domain:0 +#: field:ir.rule,domain:0 +#: field:ir.rule,domain_force:0 +#: field:res.partner.title,domain:0 +msgid "Domain" +msgstr "Домен" + +#. module: base +#: model:res.country,name:base.sh +msgid "Saint Helena" +msgstr "" + +#. module: base +#: view:ir.actions.report.xml:0 +msgid "Other Configuration" +msgstr "" + +#. module: base +#: selection:ir.property,type:0 +msgid "DateTime" +msgstr "" + +#. module: base +#: code:addons/fields.py:534 +#, python-format +msgid "" +"The second argument of the many2many field %s must be a SQL table !You used " +"%s, which is not a valid SQL table name." +msgstr "" + +#. module: base +#: view:ir.values:0 +#: field:ir.values,meta_unpickle:0 +msgid "Metadata" +msgstr "Метаподатоци" + +#. module: base +#: field:ir.ui.view,arch:0 +#: field:ir.ui.view.custom,arch:0 +msgid "View Architecture" +msgstr "" + +#. module: base +#: field:base.language.import,code:0 +msgid "Code (eg:en__US)" +msgstr "" + +#. module: base +#: view:workflow:0 +#: view:workflow.activity:0 +#: field:workflow.activity,wkf_id:0 +#: field:workflow.instance,wkf_id:0 +#: field:workflow.transition,wkf_id:0 +#: field:workflow.workitem,wkf_id:0 +msgid "Workflow" +msgstr "" + +#. module: base +#: view:partner.sms.send:0 +msgid "SMS - Gateway: clickatell" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Hungarian / Magyar" +msgstr "" + +#. module: base +#: selection:ir.model.fields,select_level:0 +msgid "Not Searchable" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (VE) / Español (VE)" +msgstr "" + +#. module: base +#: field:ir.actions.server,wkf_model_id:0 +msgid "Workflow On" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,display_menu_tip:0 +msgid "Display Menu Tips" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Created Views" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:485 +#, python-format +msgid "" +"You can not write in this document (%s) ! Be sure your user belongs to one " +"of these groups: %s." +msgstr "" + +#. module: base +#: help:ir.model.fields,domain:0 +msgid "" +"The optional domain to restrict possible values for relationship fields, " +"specified as a Python expression defining a list of triplets. For example: " +"[('color','=','red')]" +msgstr "" + +#. module: base +#: field:res.partner,ref:0 +msgid "Reference" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,target:0 +msgid "Target Window" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:507 +#, python-format +msgid "Warning!" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:304 +#, python-format +msgid "" +"Properties of base fields cannot be altered in this manner! Please modify " +"them through Python code, preferably through a custom addon!" +msgstr "" + +#. module: base +#: code:addons/osv.py:133 +#, python-format +msgid "Constraint Error" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_ui_view_custom +msgid "ir.ui.view.custom" +msgstr "" + +#. module: base +#: model:res.country,name:base.sz +msgid "Swaziland" +msgstr "" + +#. module: base +#: code:addons/orm.py:1993 +#: code:addons/orm.py:3653 +#, python-format +msgid "created." +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_woodsuppliers0 +msgid "Wood Suppliers" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:303 +#, python-format +msgid "" +"Some installed modules depend on the module you plan to Uninstall :\n" +" %s" +msgstr "" + +#. module: base +#: field:ir.sequence,number_increment:0 +msgid "Increment Number" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_res_company_tree +#: model:ir.ui.menu,name:base.menu_action_res_company_tree +msgid "Company's Structure" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Inuktitut / ᐃᓄᒃᑎᑐᑦ" +msgstr "" + +#. module: base +#: view:res.partner:0 +msgid "Search Partner" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:132 +#, python-format +msgid "\"smtp_server\" needs to be set to send mails to users" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_export_language.py:60 +#, python-format +msgid "new" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,multi:0 +msgid "On multiple doc." +msgstr "" + +#. module: base +#: field:ir.module.category,module_nr:0 +msgid "Number of Modules" +msgstr "" + +#. module: base +#: help:multi_company.default,company_dest_id:0 +msgid "Company to store the current record" +msgstr "" + +#. module: base +#: field:res.partner.bank.type.field,size:0 +msgid "Max. Size" +msgstr "" + +#. module: base +#: field:res.partner.address,name:0 +msgid "Contact Name" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_export_language.py:56 +#, python-format +msgid "" +"Save this document to a %s file and edit it with a specific software or a " +"text editor. The file encoding is UTF-8." +msgstr "" + +#. module: base +#: sql_constraint:res.lang:0 +msgid "The name of the language must be unique !" +msgstr "" + +#. module: base +#: selection:res.request,state:0 +msgid "active" +msgstr "" + +#. module: base +#: field:ir.actions.wizard,wiz_name:0 +msgid "Wizard Name" +msgstr "" + +#. module: base +#: code:addons/orm.py:2160 +#, python-format +msgid "Invalid group_by" +msgstr "" + +#. module: base +#: field:res.partner,credit_limit:0 +msgid "Credit Limit" +msgstr "" + +#. module: base +#: field:ir.model.data,date_update:0 +msgid "Update Date" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +msgid "Owner" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,src_model:0 +msgid "Source Object" +msgstr "" + +#. module: base +#: view:ir.actions.todo:0 +msgid "Config Wizard Steps" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_ui_view_sc +msgid "ir.ui.view_sc" +msgstr "" + +#. module: base +#: field:res.widget.user,widget_id:0 +#: field:res.widget.wizard,widgets_list:0 +msgid "Widget" +msgstr "" + +#. module: base +#: view:ir.model.access:0 +#: field:ir.model.access,group_id:0 +#: view:res.config.users:0 +msgid "Group" +msgstr "" + +#. module: base +#: field:ir.exports.line,name:0 +#: field:ir.translation,name:0 +#: field:res.partner.bank.type.field,name:0 +msgid "Field Name" +msgstr "" + +#. module: base +#: wizard_view:server.action.create,init:0 +#: wizard_field:server.action.create,init,type:0 +msgid "Select Action Type" +msgstr "" + +#. module: base +#: model:res.country,name:base.tv +msgid "Tuvalu" +msgstr "" + +#. module: base +#: selection:ir.model,state:0 +msgid "Custom Object" +msgstr "" + +#. module: base +#: field:res.lang,date_format:0 +msgid "Date Format" +msgstr "" + +#. module: base +#: field:res.bank,email:0 +#: field:res.partner.address,email:0 +msgid "E-Mail" +msgstr "" + +#. module: base +#: model:res.country,name:base.an +msgid "Netherlands Antilles" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:389 +#, python-format +msgid "" +"You can not remove the admin user as it is used internally for resources " +"created by OpenERP (updates, module installation, ...)" +msgstr "" + +#. module: base +#: model:res.country,name:base.gf +msgid "French Guyana" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Greek / Ελληνικά" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Bosnian / bosanski jezik" +msgstr "" + +#. module: base +#: help:ir.actions.report.xml,attachment_use:0 +msgid "" +"If you check this, then the second time the user prints with same attachment " +"name, it returns the previous report." +msgstr "" + +#. module: base +#: code:addons/orm.py:904 +#, python-format +msgid "The read method is not implemented on this object !" +msgstr "" + +#. module: base +#: help:res.lang,iso_code:0 +msgid "This ISO code is the name of po files to use for translations" +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +msgid "Your system will be updated." +msgstr "" + +#. module: base +#: field:ir.actions.todo,note:0 +#: selection:ir.property,type:0 +msgid "Text" +msgstr "" + +#. module: base +#: field:res.country,name:0 +msgid "Country Name" +msgstr "" + +#. module: base +#: model:res.country,name:base.co +msgid "Colombia" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Schedule Upgrade" +msgstr "" + +#. module: base +#: code:addons/orm.py:838 +#, python-format +msgid "Key/value '%s' not found in selection field '%s'" +msgstr "" + +#. module: base +#: help:res.country,code:0 +msgid "" +"The ISO country code in two chars.\n" +"You can use this field for quick search." +msgstr "" + +#. module: base +#: model:res.country,name:base.pw +msgid "Palau" +msgstr "" + +#. module: base +#: view:res.partner:0 +msgid "Sales & Purchases" +msgstr "" + +#. module: base +#: view:ir.translation:0 +msgid "Untranslated" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,context:0 +msgid "" +"Context dictionary as Python expression, empty by default (Default: {})" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_action_wizard +#: view:ir.actions.wizard:0 +#: model:ir.ui.menu,name:base.menu_ir_action_wizard +msgid "Wizards" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_miscellaneoussuppliers0 +msgid "Miscellaneous Suppliers" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:255 +#, python-format +msgid "Custom fields must have a name that starts with 'x_' !" +msgstr "" + +#. module: base +#: help:ir.actions.server,action_id:0 +msgid "Select the Action Window, Report, Wizard to be executed." +msgstr "" + +#. module: base +#: view:res.config.users:0 +msgid "New User" +msgstr "" + +#. module: base +#: view:base.language.export:0 +msgid "Export done" +msgstr "" + +#. module: base +#: view:ir.model:0 +msgid "Model Description" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,src_model:0 +msgid "" +"Optional model name of the objects on which this action should be visible" +msgstr "" + +#. module: base +#: field:workflow.transition,trigger_expr_id:0 +msgid "Trigger Expression" +msgstr "" + +#. module: base +#: model:res.country,name:base.jo +msgid "Jordan" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Certified" +msgstr "" + +#. module: base +#: model:res.country,name:base.er +msgid "Eritrea" +msgstr "" + +#. module: base +#: view:res.config:0 +#: view:res.config.installer:0 +msgid "description" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_base_action_rule +msgid "Automated Actions" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_actions +msgid "ir.actions.actions" +msgstr "" + +#. module: base +#: view:partner.wizard.ean.check:0 +msgid "Want to check Ean ? " +msgstr "" + +#. module: base +#: field:ir.values,key2:0 +msgid "Event Type" +msgstr "" + +#. module: base +#: view:base.language.export:0 +msgid "" +"OpenERP translations (core, modules, clients) are managed through " +"Launchpad.net, our open source project management facility. We use their " +"online interface to synchronize all translations efforts." +msgstr "" + +#. module: base +#: field:res.partner,title:0 +msgid "Partner Form" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Swedish / svenska" +msgstr "" + +#. module: base +#: model:res.country,name:base.rs +msgid "Serbia" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "Wizard View" +msgstr "" + +#. module: base +#: model:res.country,name:base.kh +msgid "Cambodia, Kingdom of" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_sequence_form +#: view:ir.sequence:0 +#: model:ir.ui.menu,name:base.menu_ir_sequence_form +#: model:ir.ui.menu,name:base.next_id_5 +msgid "Sequences" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_base_language_import +msgid "Language Import" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_config_users +msgid "res.config.users" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Albanian / Shqip" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_crm_config_opportunity +msgid "Opportunities" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_base_language_export +msgid "base.language.export" +msgstr "" + +#. module: base +#: model:res.country,name:base.pg +msgid "Papua New Guinea" +msgstr "" + +#. module: base +#: help:ir.actions.report.xml,report_type:0 +msgid "Report Type, e.g. pdf, html, raw, sxw, odt, html2html, mako2html, ..." +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_4 +msgid "Basic Partner" +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "," +msgstr "" + +#. module: base +#: view:res.partner:0 +msgid "My Partners" +msgstr "" + +#. module: base +#: view:ir.actions.report.xml:0 +msgid "XML Report" +msgstr "" + +#. module: base +#: model:res.country,name:base.es +msgid "Spain" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_translation_export +msgid "Import / Export" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,domain:0 +msgid "" +"Optional domain filtering of the destination data, as a Python expression" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_view_base_module_upgrade +#: model:ir.model,name:base.model_base_module_upgrade +msgid "Module Upgrade" +msgstr "" + +#. module: base +#: view:res.config.users:0 +msgid "" +"Groups are used to define access rights on objects and the visibility of " +"screens and menus" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (UY) / Español (UY)" +msgstr "" + +#. module: base +#: field:res.partner,mobile:0 +#: field:res.partner.address,mobile:0 +msgid "Mobile" +msgstr "" + +#. module: base +#: model:res.country,name:base.om +msgid "Oman" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_payterm_form +#: model:ir.model,name:base.model_res_payterm +msgid "Payment term" +msgstr "" + +#. module: base +#: model:res.country,name:base.nu +msgid "Niue" +msgstr "" + +#. module: base +#: selection:ir.cron,interval_type:0 +msgid "Work Days" +msgstr "" + +#. module: base +#: selection:ir.module.module,license:0 +msgid "Other OSI Approved Licence" +msgstr "" + +#. module: base +#: help:res.config.users,context_lang:0 +#: help:res.users,context_lang:0 +msgid "" +"Sets the language for the user's user interface, when UI translations are " +"available" +msgstr "" + +#. module: base +#: code:addons/orm.py:1043 +#, python-format +msgid "The unlink method is not implemented on this object !" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.act_menu_create +#: view:wizard.ir.model.menu.create:0 +msgid "Create Menu" +msgstr "" + +#. module: base +#: model:res.country,name:base.in +msgid "India" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.res_request_link-act +#: model:ir.ui.menu,name:base.menu_res_request_link_act +msgid "Request Reference Types" +msgstr "" + +#. module: base +#: view:ir.values:0 +msgid "client_action_multi, client_action_relate" +msgstr "" + +#. module: base +#: model:res.country,name:base.ad +msgid "Andorra, Principality of" +msgstr "" + +#. module: base +#: field:ir.module.category,child_ids:0 +#: field:res.partner.category,child_ids:0 +msgid "Child Categories" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_config_parameter +msgid "ir.config_parameter" +msgstr "" + +#. module: base +#: selection:base.language.export,format:0 +msgid "TGZ Archive" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%B - Full month name." +msgstr "" + +#. module: base +#: view:ir.attachment:0 +#: field:ir.attachment,type:0 +#: field:ir.model,state:0 +#: field:ir.model.fields,state:0 +#: field:ir.property,type:0 +#: field:ir.server.object.lines,type:0 +#: field:ir.translation,type:0 +#: view:ir.ui.view:0 +#: view:ir.values:0 +#: field:ir.values,key:0 +#: view:res.partner:0 +#: view:res.partner.address:0 +msgid "Type" +msgstr "" + +#. module: base +#: code:addons/orm.py:210 +#, python-format +msgid "" +"Language with code \"%s\" is not defined in your system !\n" +"Define it through the Administration menu." +msgstr "" + +#. module: base +#: model:res.country,name:base.gu +msgid "Guam (USA)" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_hr_project +msgid "Human Resources Dashboard" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:507 +#, python-format +msgid "Setting empty passwords is not allowed for security reasons!" +msgstr "" + +#. module: base +#: selection:ir.actions.server,state:0 +#: selection:workflow.activity,kind:0 +msgid "Dummy" +msgstr "" + +#. module: base +#: constraint:ir.ui.view:0 +msgid "Invalid XML for View Architecture!" +msgstr "" + +#. module: base +#: model:res.country,name:base.ky +msgid "Cayman Islands" +msgstr "" + +#. module: base +#: model:res.country,name:base.kr +msgid "South Korea" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_workflow_transition_form +#: model:ir.ui.menu,name:base.menu_workflow_transition +#: view:workflow.activity:0 +msgid "Transitions" +msgstr "" + +#. module: base +#: code:addons/orm.py:4020 +#, python-format +msgid "Record #%d of %s not found, cannot copy!" +msgstr "" + +#. module: base +#: field:ir.module.module,contributors:0 +msgid "Contributors" +msgstr "" + +#. module: base +#: selection:ir.property,type:0 +msgid "Char" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_publisher_warranty_contract_form +#: model:ir.ui.menu,name:base.menu_publisher_warranty_contract +msgid "Contracts" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (AR) / Español (AR)" +msgstr "" + +#. module: base +#: model:res.country,name:base.ug +msgid "Uganda" +msgstr "" + +#. module: base +#: field:ir.model.access,perm_unlink:0 +msgid "Delete Access" +msgstr "" + +#. module: base +#: model:res.country,name:base.ne +msgid "Niger" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Chinese (HK)" +msgstr "" + +#. module: base +#: model:res.country,name:base.ba +msgid "Bosnia-Herzegovina" +msgstr "" + +#. module: base +#: view:base.language.export:0 +msgid "" +"To improve or expand the official translations, you should use directly " +"Lauchpad's web interface (Rosetta). If you need to perform mass translation, " +"Launchpad also allows uploading full .po files at once" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (GT) / Español (GT)" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "" +"%W - Week number of the year (Monday as the first day of the week) as a " +"decimal number [00,53]. All days in a new year preceding the first Monday " +"are considered to be in week 0." +msgstr "" + +#. module: base +#: field:ir.module.module,website:0 +#: field:res.partner,website:0 +msgid "Website" +msgstr "" + +#. module: base +#: model:res.country,name:base.gs +msgid "S. Georgia & S. Sandwich Isls." +msgstr "" + +#. module: base +#: field:ir.actions.url,url:0 +msgid "Action URL" +msgstr "" + +#. module: base +#: field:base.module.import,module_name:0 +msgid "Module Name" +msgstr "" + +#. module: base +#: model:res.country,name:base.mh +msgid "Marshall Islands" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:328 +#, python-format +msgid "Changing the model of a field is forbidden!" +msgstr "" + +#. module: base +#: model:res.country,name:base.ht +msgid "Haiti" +msgstr "" + +#. module: base +#: view:ir.ui.view:0 +#: selection:ir.ui.view,type:0 +msgid "Search" +msgstr "" + +#. module: base +#: code:addons/osv.py:136 +#, python-format +msgid "" +"The operation cannot be completed, probably due to the following:\n" +"- deletion: you may be trying to delete a record while other records still " +"reference it\n" +"- creation/update: a mandatory field is not correctly set" +msgstr "" + +#. module: base +#: view:ir.rule:0 +msgid "" +"2. Group-specific rules are combined together with a logical AND operator" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:206 +#, python-format +msgid "Operation Canceled" +msgstr "" + +#. module: base +#: help:base.language.export,lang:0 +msgid "To export a new language, do not select a language." +msgstr "" + +#. module: base +#: view:res.request:0 +msgid "Request Date" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_hr_dasboard +msgid "Dashboard" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_purchase_root +msgid "Purchases" +msgstr "" + +#. module: base +#: model:res.country,name:base.md +msgid "Moldavia" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Features" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +#: report:ir.module.reference.graph:0 +msgid "Version" +msgstr "" + +#. module: base +#: view:ir.model.access:0 +#: field:ir.model.access,perm_read:0 +#: view:ir.rule:0 +msgid "Read Access" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_exports +msgid "ir.exports" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_update_translations.py:38 +#, python-format +msgid "No language with code \"%s\" exists" +msgstr "" + +#. module: base +#: code:addons/base/publisher_warranty/publisher_warranty.py:163 +#, python-format +msgid "Error during communication with the publisher warranty server." +msgstr "" + +#. module: base +#: help:ir.actions.server,email:0 +msgid "" +"Provides the fields that will be used to fetch the email address, e.g. when " +"you select the invoice, then `object.invoice_address_id.email` is the field " +"which gives the correct address" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%Y - Year with century." +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "-" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract.wizard:0 +msgid "" +"This wizard helps you register a publisher warranty contract in your OpenERP " +"system. After the contract has been registered, you will be able to send " +"issues directly to OpenERP." +msgstr "" + +#. module: base +#: code:addons/orm.py:1744 +#, python-format +msgid "The search method is not implemented on this object !" +msgstr "" + +#. module: base +#: view:wizard.ir.model.menu.create:0 +msgid "Create _Menu" +msgstr "" + +#. module: base +#: field:res.payterm,name:0 +msgid "Payment Term (short name)" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_bank +#: view:res.bank:0 +#: field:res.partner.bank,bank:0 +msgid "Bank" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_exports_line +msgid "ir.exports.line" +msgstr "" + +#. module: base +#: help:base.language.install,overwrite:0 +msgid "" +"If you check this box, your customized translations will be overwritten and " +"replaced by the official ones." +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,report_rml:0 +msgid "Main report file path" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_action_report_xml +#: field:ir.module.module,reports_by_module:0 +#: model:ir.ui.menu,name:base.menu_ir_action_report_xml +msgid "Reports" +msgstr "" + +#. module: base +#: help:ir.actions.act_window.view,multi:0 +#: help:ir.actions.report.xml,multi:0 +msgid "" +"If set to true, the action will not be displayed on the right toolbar of a " +"form view." +msgstr "" + +#. module: base +#: field:workflow,on_create:0 +msgid "On Create" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:607 +#, python-format +msgid "" +"'%s' contains too many dots. XML ids should not contain dots ! These are " +"used to refer to other modules data, as in module.reference_id" +msgstr "" + +#. module: base +#: field:partner.sms.send,user:0 +#: field:res.config.users,login:0 +#: field:res.users,login:0 +msgid "Login" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "" +"Access all the fields related to the current object using expressions, i.e. " +"object.partner_id.name " +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_country_state +msgid "Country state" +msgstr "" + +#. module: base +#: selection:ir.property,type:0 +msgid "Float" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_request_link +msgid "res.request.link" +msgstr "" + +#. module: base +#: field:ir.actions.wizard,name:0 +msgid "Wizard Info" +msgstr "" + +#. module: base +#: view:base.language.export:0 +#: model:ir.actions.act_window,name:base.action_wizard_lang_export +#: model:ir.ui.menu,name:base.menu_wizard_lang_export +msgid "Export Translation" +msgstr "" + +#. module: base +#: help:res.log,secondary:0 +msgid "" +"Do not display this log if it belongs to the same object the user is working " +"on" +msgstr "" + +#. module: base +#: model:res.country,name:base.tp +msgid "East Timor" +msgstr "" + +#. module: base +#: model:res.company,follow_up_msg:base.main_company +msgid "" +"Date : %(date)s\n" +"\n" +"Dear %(partner_name)s,\n" +"\n" +"Please find in attachment a reminder of all your unpaid invoices, for a " +"total amount due of:\n" +"\n" +"%(followup_amount).2f %(company_currency)s\n" +"\n" +"Thanks,\n" +"--\n" +"%(user_signature)s\n" +"%(company_name)s" +msgstr "" + +#. module: base +#: field:res.currency,accuracy:0 +msgid "Computational Accuracy" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Sinhalese / සිංහල" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_wizard_ir_model_menu_create_line +msgid "wizard.ir.model.menu.create.line" +msgstr "" + +#. module: base +#: field:ir.attachment,res_id:0 +msgid "Attached ID" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Day: %(day)s" +msgstr "" + +#. module: base +#: model:res.country,name:base.mv +msgid "Maldives" +msgstr "" + +#. module: base +#: help:ir.values,res_id:0 +msgid "Keep 0 if the action must appear on all resources." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_rule +msgid "ir.rule" +msgstr "" + +#. module: base +#: selection:ir.cron,interval_type:0 +msgid "Days" +msgstr "" + +#. module: base +#: help:ir.actions.server,condition:0 +msgid "" +"Condition that is to be tested before action is executed, e.g. " +"object.list_price > object.cost_price" +msgstr "" + +#. module: base +#: code:addons/base/res/partner/partner.py:155 +#: code:addons/base/res/res_company.py:66 +#, python-format +msgid " (copy)" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "7. %H:%M:%S ==> 18:25:20" +msgstr "" + +#. module: base +#: view:res.partner:0 +#: view:res.partner.category:0 +#: field:res.partner.category,partner_ids:0 +msgid "Partners" +msgstr "" + +#. module: base +#: field:res.partner.category,parent_left:0 +msgid "Left parent" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.res_widget_act_window +#: model:ir.ui.menu,name:base.menu_res_widget_act_window +msgid "Homepage Widgets" +msgstr "" + +#. module: base +#: help:ir.actions.server,message:0 +msgid "" +"Specify the message. You can use the fields from the object. e.g. `Dear [[ " +"object.partner_id.name ]]`" +msgstr "" + +#. module: base +#: field:ir.attachment,res_model:0 +msgid "Attached Model" +msgstr "" + +#. module: base +#: view:ir.rule:0 +msgid "Domain Setup" +msgstr "" + +#. module: base +#: field:ir.actions.server,trigger_name:0 +msgid "Trigger Name" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base +#: field:ir.cron,priority:0 +#: field:res.request,priority:0 +#: field:res.request.link,priority:0 +msgid "Priority" +msgstr "" + +#. module: base +#: field:workflow.transition,act_from:0 +msgid "Source Activity" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Legend (for prefix, suffix)" +msgstr "" + +#. module: base +#: selection:ir.server.object.lines,type:0 +msgid "Formula" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:389 +#, python-format +msgid "Can not remove root user!" +msgstr "" + +#. module: base +#: model:res.country,name:base.mw +msgid "Malawi" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:51 +#: code:addons/base/res/res_user.py:413 +#, python-format +msgid "%s (copy)" +msgstr "" + +#. module: base +#: field:res.partner.address,type:0 +msgid "Address Type" +msgstr "" + +#. module: base +#: view:ir.ui.menu:0 +msgid "Full Path" +msgstr "" + +#. module: base +#: view:res.request:0 +msgid "References" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "" +"%U - Week number of the year (Sunday as the first day of the week) as a " +"decimal number [00,53]. All days in a new year preceding the first Sunday " +"are considered to be in week 0." +msgstr "" + +#. module: base +#: view:ir.ui.view:0 +msgid "Advanced" +msgstr "" + +#. module: base +#: model:res.country,name:base.fi +msgid "Finland" +msgstr "" + +#. module: base +#: selection:ir.actions.act_window,view_type:0 +#: selection:ir.actions.act_window.view,view_mode:0 +#: view:ir.ui.view:0 +#: selection:ir.ui.view,type:0 +#: selection:wizard.ir.model.menu.create.line,view_type:0 +msgid "Tree" +msgstr "" + +#. module: base +#: help:res.config.users,password:0 +msgid "" +"Keep empty if you don't want the user to be able to connect on the system." +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Create / Write / Copy" +msgstr "" + +#. module: base +#: view:base.language.export:0 +msgid "https://help.launchpad.net/Translations" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,view_mode:0 +msgid "View Mode" +msgstr "" + +#. module: base +#: view:base.language.import:0 +msgid "" +"When using CSV format, please also check that the first line of your file is " +"one of the following:" +msgstr "" + +#. module: base +#: code:addons/fields.py:114 +#, python-format +msgid "Not implemented search_memory method !" +msgstr "" + +#. module: base +#: view:res.log:0 +msgid "Logs" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish / Español" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Korean (KP) / 한국어 (KP)" +msgstr "" + +#. module: base +#: view:base.module.update:0 +msgid "" +"This wizard will scan all module repositories on the server side to detect " +"newly added modules as well as any change to existing modules." +msgstr "" + +#. module: base +#: field:res.company,logo:0 +msgid "Logo" +msgstr "" + +#. module: base +#: view:res.partner.address:0 +msgid "Search Contact" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Uninstall (beta)" +msgstr "" + +#. module: base +#: selection:ir.actions.act_window,target:0 +#: selection:ir.actions.url,target:0 +msgid "New Window" +msgstr "" + +#. module: base +#: model:res.country,name:base.bs +msgid "Bahamas" +msgstr "" + +#. module: base +#: code:addons/base/res/partner/partner.py:250 +#, python-format +msgid "" +"Couldn't generate the next id because some partners have an alphabetic id !" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +msgid "Attachment" +msgstr "" + +#. module: base +#: model:res.country,name:base.ie +msgid "Ireland" +msgstr "" + +#. module: base +#: field:base.module.update,update:0 +msgid "Number of modules updated" +msgstr "" + +#. module: base +#: code:addons/fields.py:100 +#, python-format +msgid "Not implemented set_memory method !" +msgstr "" + +#. module: base +#: view:workflow.activity:0 +msgid "Workflow Activity" +msgstr "" + +#. module: base +#: view:ir.rule:0 +msgid "" +"Example: GLOBAL_RULE_1 AND GLOBAL_RULE_2 AND ( (GROUP_A_RULE_1 AND " +"GROUP_A_RULE_2) OR (GROUP_B_RULE_1 AND GROUP_B_RULE_2) )" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_ui_view +msgid "" +"Views allows you to personalize each view of OpenERP. You can add new " +"fields, move fields, rename them or delete the ones that you do not need." +msgstr "" + +#. module: base +#: field:ir.actions.act_window,groups_id:0 +#: model:ir.actions.act_window,name:base.action_res_groups +#: view:ir.actions.report.xml:0 +#: field:ir.actions.report.xml,groups_id:0 +#: view:ir.actions.todo:0 +#: field:ir.actions.todo,groups_id:0 +#: field:ir.actions.wizard,groups_id:0 +#: view:ir.model:0 +#: field:ir.model.fields,groups:0 +#: field:ir.rule,groups:0 +#: view:ir.ui.menu:0 +#: field:ir.ui.menu,groups_id:0 +#: model:ir.ui.menu,name:base.menu_action_res_groups +#: field:res.config.users,groups_id:0 +#: view:res.groups:0 +#: view:res.users:0 +#: field:res.users,groups_id:0 +msgid "Groups" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (CL) / Español (CL)" +msgstr "" + +#. module: base +#: view:res.config.users:0 +msgid "" +"Create additional users and assign them groups that will allow them to have " +"access to selected functionalities within the system. Click on 'Done' if you " +"do not wish to add more users at this stage, you can always do this later." +msgstr "" + +#. module: base +#: model:res.country,name:base.bz +msgid "Belize" +msgstr "" + +#. module: base +#: model:res.country,name:base.ge +msgid "Georgia" +msgstr "" + +#. module: base +#: model:res.country,name:base.pl +msgid "Poland" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,view_mode:0 +msgid "" +"Comma-separated list of allowed view modes, such as 'form', 'tree', " +"'calendar', etc. (Default: tree,form)" +msgstr "" + +#. module: base +#: code:addons/orm.py:3147 +#, python-format +msgid "A document was modified since you last viewed it (%s:%d)" +msgstr "" + +#. module: base +#: view:workflow:0 +msgid "Workflow Editor" +msgstr "" + +#. module: base +#: selection:ir.module.module,state:0 +#: selection:ir.module.module.dependency,state:0 +msgid "To be removed" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_sequence +msgid "ir.sequence" +msgstr "" + +#. module: base +#: help:ir.actions.server,expression:0 +msgid "" +"Enter the field/expression that will return the list. E.g. select the sale " +"order in Object, and you can have loop on the sales order line. Expression = " +"`object.order_line`." +msgstr "" + +#. module: base +#: field:ir.property,fields_id:0 +#: selection:ir.translation,type:0 +#: field:multi_company.default,field_id:0 +msgid "Field" +msgstr "" + +#. module: base +#: view:ir.rule:0 +msgid "Groups (no group = global)" +msgstr "" + +#. module: base +#: model:res.country,name:base.fo +msgid "Faroe Islands" +msgstr "" + +#. module: base +#: selection:res.config.users,view:0 +#: selection:res.config.view,view:0 +#: selection:res.users,view:0 +msgid "Simplified" +msgstr "" + +#. module: base +#: model:res.country,name:base.st +msgid "Saint Tome (Sao Tome) and Principe" +msgstr "" + +#. module: base +#: selection:res.partner.address,type:0 +msgid "Invoice" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Portugese (BR) / Português (BR)" +msgstr "" + +#. module: base +#: model:res.country,name:base.bb +msgid "Barbados" +msgstr "" + +#. module: base +#: model:res.country,name:base.mg +msgid "Madagascar" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:96 +#, python-format +msgid "" +"The Object name must start with x_ and not contain any special character !" +msgstr "" + +#. module: base +#: field:ir.actions.configuration.wizard,note:0 +msgid "Next Wizard" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_menu_admin +#: view:ir.ui.menu:0 +#: field:ir.ui.menu,name:0 +msgid "Menu" +msgstr "" + +#. module: base +#: field:res.currency,rate:0 +msgid "Current Rate" +msgstr "" + +#. module: base +#: field:ir.ui.view.custom,ref_id:0 +msgid "Original View" +msgstr "" + +#. module: base +#: view:ir.values:0 +msgid "Action To Launch" +msgstr "" + +#. module: base +#: field:ir.actions.url,target:0 +msgid "Action Target" +msgstr "" + +#. module: base +#: model:res.country,name:base.ai +msgid "Anguilla" +msgstr "" + +#. module: base +#: field:ir.ui.view_sc,name:0 +msgid "Shortcut Name" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,limit:0 +msgid "Default limit for the list view" +msgstr "" + +#. module: base +#: help:ir.actions.server,write_id:0 +msgid "" +"Provide the field name that the record id refers to for the write operation. " +"If it is empty it will refer to the active id of the object." +msgstr "" + +#. module: base +#: model:res.country,name:base.zw +msgid "Zimbabwe" +msgstr "" + +#. module: base +#: view:base.module.update:0 +msgid "Please be patient, as this operation may take a few seconds..." +msgstr "" + +#. module: base +#: help:ir.values,action_id:0 +msgid "This field is not used, it only helps you to select the right action." +msgstr "" + +#. module: base +#: field:ir.actions.server,email:0 +msgid "Email Address" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "French (BE) / Français (BE)" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +#: field:workflow.activity,action_id:0 +msgid "Server Action" +msgstr "" + +#. module: base +#: model:res.country,name:base.tt +msgid "Trinidad and Tobago" +msgstr "" + +#. module: base +#: model:res.country,name:base.lv +msgid "Latvia" +msgstr "" + +#. module: base +#: view:ir.values:0 +msgid "Values" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Field Mappings" +msgstr "" + +#. module: base +#: view:base.language.export:0 +msgid "Export Translations" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_custom +msgid "Customization" +msgstr "" + +#. module: base +#: model:res.country,name:base.py +msgid "Paraguay" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_act_window_close +msgid "ir.actions.act_window_close" +msgstr "" + +#. module: base +#: field:ir.server.object.lines,col1:0 +msgid "Destination" +msgstr "" + +#. module: base +#: model:res.country,name:base.lt +msgid "Lithuania" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_view_partner_clear_ids +#: model:ir.model,name:base.model_partner_clear_ids +#: view:partner.clear.ids:0 +msgid "Clear IDs" +msgstr "" + +#. module: base +#: help:ir.cron,model:0 +msgid "" +"Name of object whose function will be called when this scheduler will run. " +"e.g. 'res.partener'" +msgstr "" + +#. module: base +#: code:addons/orm.py:1040 +#, python-format +msgid "The perm_read method is not implemented on this object !" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%y - Year without century [00,99]." +msgstr "" + +#. module: base +#: model:res.country,name:base.si +msgid "Slovenia" +msgstr "" + +#. module: base +#: model:res.country,name:base.pk +msgid "Pakistan" +msgstr "" + +#. module: base +#: code:addons/orm.py:1350 +#, python-format +msgid "Invalid Object Architecture!" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_email_gateway_form +msgid "Messages" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:303 +#: code:addons/base/ir/ir_model.py:317 +#: code:addons/base/ir/ir_model.py:319 +#: code:addons/base/ir/ir_model.py:321 +#: code:addons/base/ir/ir_model.py:328 +#: code:addons/base/ir/ir_model.py:331 +#: code:addons/base/module/wizard/base_update_translations.py:38 +#, python-format +msgid "Error!" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%p - Equivalent of either AM or PM." +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Iteration Actions" +msgstr "" + +#. module: base +#: help:multi_company.default,company_id:0 +msgid "Company where the user is connected" +msgstr "" + +#. module: base +#: field:publisher_warranty.contract,date_stop:0 +msgid "Ending Date" +msgstr "" + +#. module: base +#: model:res.country,name:base.nz +msgid "New Zealand" +msgstr "" + +#. module: base +#: code:addons/orm.py:3366 +#, python-format +msgid "" +"One of the records you are trying to modify has already been deleted " +"(Document type: %s)." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_country +msgid "" +"Display and manage the list of all countries that can be assigned to your " +"partner records. You can create or delete countries to make sure the ones " +"you are working on will be maintained." +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_7 +msgid "Openstuff.net" +msgstr "" + +#. module: base +#: model:res.country,name:base.nf +msgid "Norfolk Island" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Korean (KR) / 한국어 (KR)" +msgstr "" + +#. module: base +#: help:ir.model.fields,model:0 +msgid "The technical name of the model this field belongs to" +msgstr "" + +#. module: base +#: field:ir.actions.server,action_id:0 +#: selection:ir.actions.server,state:0 +msgid "Client Action" +msgstr "" + +#. module: base +#: model:res.country,name:base.bd +msgid "Bangladesh" +msgstr "" + +#. module: base +#: constraint:res.company:0 +msgid "Error! You can not create recursive companies." +msgstr "" + +#. module: base +#: selection:publisher_warranty.contract,state:0 +msgid "Valid" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "XSL" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:322 +#, python-format +msgid "Can not upgrade module '%s'. It is not installed." +msgstr "" + +#. module: base +#: model:res.country,name:base.cu +msgid "Cuba" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_partner_event +msgid "res.partner.event" +msgstr "" + +#. module: base +#: model:res.widget,title:base.facebook_widget +msgid "Facebook" +msgstr "" + +#. module: base +#: model:res.country,name:base.am +msgid "Armenia" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_property_form +#: model:ir.ui.menu,name:base.menu_ir_property_form_all +msgid "Configuration Parameters" +msgstr "" + +#. module: base +#: constraint:ir.cron:0 +msgid "Invalid arguments" +msgstr "" + +#. module: base +#: model:res.country,name:base.se +msgid "Sweden" +msgstr "" + +#. module: base +#: selection:ir.actions.act_window.view,view_mode:0 +#: selection:ir.ui.view,type:0 +#: selection:wizard.ir.model.menu.create.line,view_type:0 +msgid "Gantt" +msgstr "" + +#. module: base +#: view:ir.property:0 +msgid "Property" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_partner_bank_type +#: view:res.partner.bank.type:0 +msgid "Bank Account Type" +msgstr "" + +#. module: base +#: field:base.language.export,config_logo:0 +#: field:base.language.import,config_logo:0 +#: field:base.language.install,config_logo:0 +#: field:base.module.import,config_logo:0 +#: field:base.module.update,config_logo:0 +#: field:base.update.translations,config_logo:0 +#: field:ir.actions.configuration.wizard,config_logo:0 +#: field:ir.wizard.screen,config_logo:0 +#: field:publisher_warranty.contract.wizard,config_logo:0 +#: field:res.config,config_logo:0 +#: field:res.config.installer,config_logo:0 +#: field:res.config.users,config_logo:0 +#: field:res.config.view,config_logo:0 +msgid "Image" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Iteration Action Configuration" +msgstr "" + +#. module: base +#: selection:publisher_warranty.contract,state:0 +msgid "Canceled" +msgstr "" + +#. module: base +#: model:res.country,name:base.at +msgid "Austria" +msgstr "" + +#. module: base +#: selection:base.language.install,state:0 +#: selection:base.module.import,state:0 +#: selection:base.module.update,state:0 +msgid "done" +msgstr "" + +#. module: base +#: selection:ir.actions.act_window.view,view_mode:0 +#: model:ir.ui.menu,name:base.menu_calendar_configuration +#: selection:ir.ui.view,type:0 +#: selection:wizard.ir.model.menu.create.line,view_type:0 +msgid "Calendar" +msgstr "" + +#. module: base +#: field:res.partner.address,partner_id:0 +msgid "Partner Name" +msgstr "" + +#. module: base +#: field:workflow.activity,signal_send:0 +msgid "Signal (subflow.*)" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_17 +msgid "HR sector" +msgstr "" + +#. module: base +#: code:addons/orm.py:3817 +#, python-format +msgid "" +"Invalid \"order\" specified. A valid \"order\" specification is a comma-" +"separated list of valid field names (optionally followed by asc/desc for the " +"direction)" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_module_module_dependency +msgid "Module dependency" +msgstr "" + +#. module: base +#: selection:publisher_warranty.contract.wizard,state:0 +msgid "Draft" +msgstr "" + +#. module: base +#: selection:res.config.users,view:0 +#: selection:res.config.view,view:0 +#: selection:res.users,view:0 +msgid "Extended" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_partner_title_contact +msgid "" +"Manage the contact titles you want to have available in your system and the " +"way you want to print them in letters and other documents. Some example: " +"Mr., Mrs. " +msgstr "" + +#. module: base +#: field:res.company,rml_footer1:0 +msgid "Report Footer 1" +msgstr "" + +#. module: base +#: field:res.company,rml_footer2:0 +msgid "Report Footer 2" +msgstr "" + +#. module: base +#: view:ir.model.access:0 +#: view:res.groups:0 +#: field:res.groups,model_access:0 +msgid "Access Controls" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +#: field:ir.module.module,dependencies_id:0 +msgid "Dependencies" +msgstr "" + +#. module: base +#: field:multi_company.default,company_id:0 +msgid "Main Company" +msgstr "" + +#. module: base +#: field:ir.ui.menu,web_icon_hover:0 +msgid "Web Icon File (hover)" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "" +"If you use a formula type, use a python expression using the variable " +"'object'." +msgstr "" + +#. module: base +#: field:res.partner.address,birthdate:0 +msgid "Birthdate" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_title_contact +#: model:ir.ui.menu,name:base.menu_partner_title_contact +msgid "Contact Titles" +msgstr "" + +#. module: base +#: view:base.language.import:0 +msgid "" +"Please double-check that the file encoding is set to UTF-8 (sometimes called " +"Unicode) when the translator exports it." +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (DO) / Español (DO)" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_workflow_activity +msgid "workflow.activity" +msgstr "" + +#. module: base +#: help:ir.ui.view_sc,res_id:0 +msgid "" +"Reference of the target resource, whose model/table depends on the 'Resource " +"Name' field." +msgstr "" + +#. module: base +#: field:ir.model.fields,select_level:0 +msgid "Searchable" +msgstr "" + +#. module: base +#: model:res.country,name:base.uy +msgid "Uruguay" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Finnish / Suomi" +msgstr "" + +#. module: base +#: field:ir.rule,perm_write:0 +msgid "Apply For Write" +msgstr "" + +#. module: base +#: field:ir.sequence,prefix:0 +msgid "Prefix" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "German / Deutsch" +msgstr "" + +#. module: base +#: help:ir.actions.server,trigger_name:0 +msgid "Select the Signal name that is to be used as the trigger." +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Fields Mapping" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Portugese / Português" +msgstr "" + +#. module: base +#: model:res.partner.title,name:base.res_partner_title_sir +msgid "Sir" +msgstr "" + +#. module: base +#: code:addons/orm.py:1622 +#, python-format +msgid "There is no view of type '%s' defined for the structure!" +msgstr "" + +#. module: base +#: field:ir.default,ref_id:0 +msgid "ID Ref." +msgstr "" + +#. module: base +#: model:ir.actions.server,name:base.action_start_configurator +#: model:ir.ui.menu,name:base.menu_view_base_module_configuration +msgid "Start Configuration" +msgstr "" + +#. module: base +#: model:res.country,name:base.mt +msgid "Malta" +msgstr "" + +#. module: base +#: field:ir.actions.server,fields_lines:0 +msgid "Field Mappings." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_module_module +#: view:ir.model.data:0 +#: field:ir.model.data,module:0 +#: view:ir.module.module:0 +#: field:ir.module.module.dependency,module_id:0 +#: report:ir.module.reference.graph:0 +#: field:ir.translation,module:0 +msgid "Module" +msgstr "" + +#. module: base +#: field:ir.attachment,description:0 +#: view:ir.module.module:0 +#: field:ir.module.module,description:0 +#: field:res.partner.bank,name:0 +#: view:res.partner.event:0 +#: field:res.partner.event,description:0 +#: view:res.request:0 +msgid "Description" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_workflow_instance_form +#: model:ir.ui.menu,name:base.menu_workflow_instance +msgid "Instances" +msgstr "" + +#. module: base +#: model:res.country,name:base.aq +msgid "Antarctica" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,auto:0 +msgid "Custom python parser" +msgstr "" + +#. module: base +#: view:base.language.import:0 +msgid "_Import" +msgstr "" + +#. module: base +#: view:res.partner.canal:0 +msgid "Channel" +msgstr "" + +#. module: base +#: field:res.lang,grouping:0 +msgid "Separator Format" +msgstr "" + +#. module: base +#: selection:publisher_warranty.contract,state:0 +msgid "Unvalidated" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.next_id_9 +msgid "Database Structure" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_mass_mail +#: model:ir.model,name:base.model_partner_wizard_spam +#: view:partner.wizard.spam:0 +msgid "Mass Mailing" +msgstr "" + +#. module: base +#: model:res.country,name:base.yt +msgid "Mayotte" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_actions.py:597 +#, python-format +msgid "Please specify an action to launch !" +msgstr "" + +#. module: base +#: view:res.payterm:0 +msgid "Payment Term" +msgstr "" + +#. module: base +#: selection:res.lang,direction:0 +msgid "Right-to-Left" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +#: model:ir.actions.act_window,name:base.actions_ir_filters_view +#: view:ir.filters:0 +#: model:ir.model,name:base.model_ir_filters +#: model:ir.ui.menu,name:base.menu_ir_filters +msgid "Filters" +msgstr "" + +#. module: base +#: code:addons/orm.py:758 +#, python-format +msgid "Please check that all your lines have %d columns." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_cron_act +#: view:ir.cron:0 +#: model:ir.ui.menu,name:base.menu_ir_cron_act +msgid "Scheduled Actions" +msgstr "" + +#. module: base +#: field:res.partner.address,title:0 +#: field:res.partner.title,name:0 +#: field:res.widget,title:0 +msgid "Title" +msgstr "" + +#. module: base +#: help:ir.property,res_id:0 +msgid "If not set, acts as a default value for new resources" +msgstr "" + +#. module: base +#: code:addons/orm.py:3448 +#, python-format +msgid "Recursivity Detected." +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:262 +#, python-format +msgid "Recursion error in modules dependencies !" +msgstr "" + +#. module: base +#: view:base.language.install:0 +msgid "" +"This wizard helps you add a new language to your OpenERP system. After " +"loading a new language it becomes available as default interface language " +"for users and partners." +msgstr "" + +#. module: base +#: view:ir.model:0 +msgid "Create a Menu" +msgstr "" + +#. module: base +#: help:res.partner,vat:0 +msgid "" +"Value Added Tax number. Check the box if the partner is subjected to the " +"VAT. Used by the VAT legal statement." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_maintenance_contract +msgid "maintenance.contract" +msgstr "" + +#. module: base +#: model:res.country,name:base.ru +msgid "Russian Federation" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Urdu / اردو" +msgstr "" + +#. module: base +#: field:res.company,name:0 +msgid "Company Name" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_country +#: model:ir.ui.menu,name:base.menu_country_partner +msgid "Countries" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "RML (deprecated - use Report)" +msgstr "" + +#. module: base +#: view:ir.rule:0 +msgid "Record rules" +msgstr "" + +#. module: base +#: view:ir.property:0 +msgid "Field Information" +msgstr "" + +#. module: base +#: view:ir.actions.todo:0 +msgid "Search Actions" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_view_partner_wizard_ean_check +#: view:partner.wizard.ean.check:0 +msgid "Ean check" +msgstr "" + +#. module: base +#: field:res.partner,vat:0 +msgid "VAT" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "12. %w ==> 5 ( Friday is the 6th day)" +msgstr "" + +#. module: base +#: constraint:res.partner.category:0 +msgid "Error ! You can not create recursive categories." +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%x - Appropriate date representation." +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%d - Day of the month [01,31]." +msgstr "" + +#. module: base +#: model:res.country,name:base.tj +msgid "Tajikistan" +msgstr "" + +#. module: base +#: selection:ir.module.module,license:0 +msgid "GPL-2 or later version" +msgstr "" + +#. module: base +#: model:res.partner.title,shortcut:base.res_partner_title_sir +msgid "M." +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:429 +#, python-format +msgid "" +"Can not create the module file:\n" +" %s" +msgstr "" + +#. module: base +#: code:addons/orm.py:2973 +#, python-format +msgid "" +"Operation prohibited by access rules, or performed on an already deleted " +"document (Operation: read, Document type: %s)." +msgstr "" + +#. module: base +#: model:res.country,name:base.nr +msgid "Nauru" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:200 +#, python-format +msgid "The certificate ID of the module must be unique !" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_property +msgid "ir.property" +msgstr "" + +#. module: base +#: selection:ir.actions.act_window,view_type:0 +#: selection:ir.actions.act_window.view,view_mode:0 +#: view:ir.ui.view:0 +#: selection:ir.ui.view,type:0 +#: selection:wizard.ir.model.menu.create.line,view_type:0 +msgid "Form" +msgstr "" + +#. module: base +#: model:res.country,name:base.me +msgid "Montenegro" +msgstr "" + +#. module: base +#: view:ir.cron:0 +msgid "Technical Data" +msgstr "" + +#. module: base +#: view:res.partner:0 +#: field:res.partner,category_id:0 +msgid "Categories" +msgstr "" + +#. module: base +#: view:base.language.import:0 +msgid "" +"If you need another language than the official ones available, you can " +"import a language pack from here. Other OpenERP languages than the official " +"ones can be found on launchpad." +msgstr "" + +#. module: base +#: view:ir.module.module:0 +#: selection:ir.module.module,state:0 +#: selection:ir.module.module.dependency,state:0 +msgid "To be upgraded" +msgstr "" + +#. module: base +#: model:res.country,name:base.ly +msgid "Libya" +msgstr "" + +#. module: base +#: model:res.country,name:base.cf +msgid "Central African Republic" +msgstr "" + +#. module: base +#: model:res.country,name:base.li +msgid "Liechtenstein" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_partner_sms_send +#: view:partner.sms.send:0 +msgid "Send SMS" +msgstr "" + +#. module: base +#: field:res.partner,ean13:0 +msgid "EAN13" +msgstr "" + +#. module: base +#: code:addons/orm.py:1622 +#, python-format +msgid "Invalid Architecture!" +msgstr "" + +#. module: base +#: model:res.country,name:base.pt +msgid "Portugal" +msgstr "" + +#. module: base +#: sql_constraint:ir.model.data:0 +msgid "" +"You cannot have multiple records with the same id for the same module !" +msgstr "" + +#. module: base +#: field:ir.module.module,certificate:0 +msgid "Quality Certificate" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "6. %d, %m ==> 05, 12" +msgstr "" + +#. module: base +#: field:res.config.users,date:0 +#: field:res.users,date:0 +msgid "Last Connection" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,help:0 +msgid "Action description" +msgstr "" + +#. module: base +#: help:res.partner,customer:0 +msgid "Check this box if the partner is a customer." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.res_lang_act_window +#: model:ir.model,name:base.model_res_lang +#: model:ir.ui.menu,name:base.menu_res_lang_act_window +#: view:res.lang:0 +msgid "Languages" +msgstr "" + +#. module: base +#: selection:workflow.activity,join_mode:0 +#: selection:workflow.activity,split_mode:0 +msgid "Xor" +msgstr "" + +#. module: base +#: model:res.country,name:base.ec +msgid "Ecuador" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_export_language.py:52 +#, python-format +msgid "" +"Save this document to a .CSV file and open it with your favourite " +"spreadsheet software. The file encoding is UTF-8. You have to translate the " +"latest column before reimporting it." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_customer_form +#: model:ir.actions.act_window,name:base.action_partner_form +#: model:ir.ui.menu,name:base.menu_partner_form +#: view:res.partner:0 +msgid "Customers" +msgstr "" + +#. module: base +#: model:res.country,name:base.au +msgid "Australia" +msgstr "" + +#. module: base +#: help:res.partner,lang:0 +msgid "" +"If the selected language is loaded in the system, all documents related to " +"this partner will be printed in this language. If not, it will be english." +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "Menu :" +msgstr "" + +#. module: base +#: selection:ir.model.fields,state:0 +msgid "Base Field" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract:0 +msgid "Validate" +msgstr "" + +#. module: base +#: field:ir.actions.todo,restart:0 +msgid "Restart" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,report_sxw_content:0 +#: field:ir.actions.report.xml,report_sxw_content_data:0 +msgid "SXW content" +msgstr "" + +#. module: base +#: view:ir.actions.wizard:0 +#: field:wizard.ir.model.menu.create.line,wizard_id:0 +msgid "Wizard" +msgstr "" + +#. module: base +#: view:ir.cron:0 +msgid "Action to Trigger" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:136 +#, python-format +msgid "\"email_from\" needs to be set to send welcome mails to users" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "Constraint" +msgstr "" + +#. module: base +#: selection:ir.values,key:0 +#: selection:res.partner.address,type:0 +msgid "Default" +msgstr "" + +#. module: base +#: view:ir.model.fields:0 +#: field:ir.model.fields,required:0 +#: field:res.partner.bank.type.field,required:0 +msgid "Required" +msgstr "" + +#. module: base +#: view:res.users:0 +msgid "Default Filters" +msgstr "" + +#. module: base +#: field:res.request.history,name:0 +msgid "Summary" +msgstr "" + +#. module: base +#: field:multi_company.default,expression:0 +msgid "Expression" +msgstr "" + +#. module: base +#: help:ir.actions.server,subject:0 +msgid "" +"Specify the subject. You can use fields from the object, e.g. `Hello [[ " +"object.partner_id.name ]]`" +msgstr "" + +#. module: base +#: view:res.company:0 +msgid "Header/Footer" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,help:0 +msgid "" +"Optional help text for the users with a description of the target view, such " +"as its usage and purpose." +msgstr "" + +#. module: base +#: model:res.country,name:base.va +msgid "Holy See (Vatican City State)" +msgstr "" + +#. module: base +#: field:base.module.import,module_file:0 +msgid "Module .ZIP file" +msgstr "" + +#. module: base +#: field:ir.ui.view,xml_id:0 +msgid "XML ID" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_16 +msgid "Telecom sector" +msgstr "" + +#. module: base +#: field:workflow.transition,trigger_model:0 +msgid "Trigger Object" +msgstr "" + +#. module: base +#: view:res.users:0 +msgid "Current Activity" +msgstr "" + +#. module: base +#: view:workflow.activity:0 +#: field:workflow.activity,in_transitions:0 +msgid "Incoming Transitions" +msgstr "" + +#. module: base +#: model:res.country,name:base.sr +msgid "Suriname" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.marketing_menu +msgid "Marketing" +msgstr "" + +#. module: base +#: view:res.partner.bank:0 +#: model:res.partner.bank.type,name:base.bank_normal +msgid "Bank account" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (HN) / Español (HN)" +msgstr "" + +#. module: base +#: view:ir.sequence.type:0 +msgid "Sequence Type" +msgstr "" + +#. module: base +#: view:ir.ui.view.custom:0 +msgid "Customized Architecture" +msgstr "" + +#. module: base +#: field:ir.module.module,license:0 +msgid "License" +msgstr "" + +#. module: base +#: field:ir.attachment,url:0 +msgid "Url" +msgstr "" + +#. module: base +#: selection:ir.actions.todo,restart:0 +msgid "Always" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "SQL Constraint" +msgstr "" + +#. module: base +#: field:ir.actions.server,srcmodel_id:0 +#: field:ir.model.fields,model_id:0 +msgid "Model" +msgstr "" + +#. module: base +#: view:base.language.install:0 +msgid "" +"The selected language has been successfully installed. You must change the " +"preferences of the user and open a new menu to view the changes." +msgstr "" + +#. module: base +#: sql_constraint:ir.config_parameter:0 +msgid "Key must be unique." +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +msgid "Open a Window" +msgstr "" + +#. module: base +#: model:res.country,name:base.gq +msgid "Equatorial Guinea" +msgstr "" + +#. module: base +#: view:base.module.import:0 +#: model:ir.actions.act_window,name:base.action_view_base_module_import +msgid "Module Import" +msgstr "" + +#. module: base +#: field:res.bank,zip:0 +#: field:res.partner.address,zip:0 +#: field:res.partner.bank,zip:0 +msgid "Zip" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +#: field:ir.module.module,author:0 +msgid "Author" +msgstr "" + +#. module: base +#: model:res.country,name:base.mk +msgid "FYROM" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%c - Appropriate date and time representation." +msgstr "" + +#. module: base +#: code:addons/base/res/res_config.py:422 +#, python-format +msgid "" +"Your database is now fully configured.\n" +"\n" +"Click 'Continue' and enjoy your OpenERP experience..." +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Hebrew / עִבְרִי" +msgstr "" + +#. module: base +#: model:res.country,name:base.bo +msgid "Bolivia" +msgstr "" + +#. module: base +#: model:res.country,name:base.gh +msgid "Ghana" +msgstr "" + +#. module: base +#: field:res.lang,direction:0 +msgid "Direction" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +#: model:ir.actions.act_window,name:base.action_ui_view +#: field:ir.actions.act_window,view_ids:0 +#: field:ir.actions.act_window,views:0 +#: field:ir.module.module,views_by_module:0 +#: model:ir.ui.menu,name:base.menu_action_ui_view +#: view:ir.ui.view:0 +msgid "Views" +msgstr "" + +#. module: base +#: view:res.groups:0 +#: field:res.groups,rule_groups:0 +msgid "Rules" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:216 +#, python-format +msgid "You try to remove a module that is installed or will be installed" +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +msgid "The selected modules have been updated / installed !" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (PR) / Español (PR)" +msgstr "" + +#. module: base +#: model:res.country,name:base.gt +msgid "Guatemala" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_workflow_form +#: model:ir.ui.menu,name:base.menu_low_workflow +#: model:ir.ui.menu,name:base.menu_workflow +#: model:ir.ui.menu,name:base.menu_workflow_root +msgid "Workflows" +msgstr "" + +#. module: base +#: field:ir.translation,xml_id:0 +msgid "XML Id" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_config_user_form +msgid "Create Users" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_partner_title +msgid "res.partner.title" +msgstr "" + +#. module: base +#: view:ir.values:0 +msgid "tree_but_action, client_print_multi" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_retailers0 +msgid "Retailers" +msgstr "" + +#. module: base +#: help:ir.cron,priority:0 +msgid "" +"0=Very Urgent\n" +"10=Not urgent" +msgstr "" + +#. module: base +#: view:res.config:0 +#: view:res.config.installer:0 +msgid "Skip" +msgstr "" + +#. module: base +#: model:res.country,name:base.ls +msgid "Lesotho" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:114 +#, python-format +msgid "You can not remove the model '%s' !" +msgstr "" + +#. module: base +#: model:res.country,name:base.ke +msgid "Kenya" +msgstr "" + +#. module: base +#: view:res.partner.event:0 +msgid "Event" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_custom_reports +msgid "Custom Reports" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Abkhazian / аҧсуа" +msgstr "" + +#. module: base +#: view:base.module.configuration:0 +msgid "System Configuration Done" +msgstr "" + +#. module: base +#: code:addons/orm.py:929 +#, python-format +msgid "Error occurred while validating the field(s) %s: %s" +msgstr "" + +#. module: base +#: view:ir.property:0 +msgid "Generic" +msgstr "" + +#. module: base +#: model:res.country,name:base.sm +msgid "San Marino" +msgstr "" + +#. module: base +#: model:res.country,name:base.bm +msgid "Bermuda" +msgstr "" + +#. module: base +#: model:res.country,name:base.pe +msgid "Peru" +msgstr "" + +#. module: base +#: selection:ir.model.fields,on_delete:0 +msgid "Set NULL" +msgstr "" + +#. module: base +#: model:res.country,name:base.bj +msgid "Benin" +msgstr "" + +#. module: base +#: code:addons/base/publisher_warranty/publisher_warranty.py:281 +#, python-format +msgid "That contract is already registered in the system." +msgstr "" + +#. module: base +#: help:ir.sequence,suffix:0 +msgid "Suffix value of the record for the sequence" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (PY) / Español (PY)" +msgstr "" + +#. module: base +#: field:ir.config_parameter,key:0 +msgid "Key" +msgstr "" + +#. module: base +#: field:res.company,rml_header:0 +msgid "RML Header" +msgstr "" + +#. module: base +#: field:partner.sms.send,app_id:0 +msgid "API ID" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:486 +#, python-format +msgid "" +"You can not create this document (%s) ! Be sure your user belongs to one of " +"these groups: %s." +msgstr "" + +#. module: base +#: model:res.country,name:base.mu +msgid "Mauritius" +msgstr "" + +#. module: base +#: view:ir.model.access:0 +#: view:ir.rule:0 +msgid "Full Access" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +#: view:ir.actions.report.xml:0 +#: view:ir.actions.wizard:0 +#: view:ir.model.fields:0 +#: model:ir.ui.menu,name:base.menu_security +msgid "Security" +msgstr "" + +#. module: base +#: model:res.widget,title:base.openerp_favorites_twitter_widget +msgid "OpenERP Favorites" +msgstr "" + +#. module: base +#: model:res.country,name:base.za +msgid "South Africa" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +#: selection:ir.module.module,state:0 +#: selection:ir.module.module.dependency,state:0 +msgid "Installed" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Ukrainian / українська" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_translation +#: model:ir.ui.menu,name:base.menu_action_translation +msgid "Translation Terms" +msgstr "" + +#. module: base +#: model:res.country,name:base.sn +msgid "Senegal" +msgstr "" + +#. module: base +#: model:res.country,name:base.hu +msgid "Hungary" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_groups +msgid "res.groups" +msgstr "" + +#. module: base +#: model:res.country,name:base.br +msgid "Brazil" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%M - Minute [00,59]." +msgstr "" + +#. module: base +#: selection:ir.module.module,license:0 +msgid "Affero GPL-3" +msgstr "" + +#. module: base +#: field:ir.sequence,number_next:0 +msgid "Next Number" +msgstr "" + +#. module: base +#: help:workflow.transition,condition:0 +msgid "Expression to be satisfied if we want the transition done." +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (PA) / Español (PA)" +msgstr "" + +#. module: base +#: view:res.currency:0 +#: field:res.currency,rate_ids:0 +msgid "Rates" +msgstr "" + +#. module: base +#: model:res.country,name:base.sy +msgid "Syria" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "======================================================" +msgstr "" + +#. module: base +#: help:ir.actions.server,mobile:0 +msgid "" +"Provides fields that be used to fetch the mobile number, e.g. you select the " +"invoice, then `object.invoice_address_id.mobile` is the field which gives " +"the correct mobile number" +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +msgid "System update completed" +msgstr "" + +#. module: base +#: selection:res.request,state:0 +msgid "draft" +msgstr "" + +#. module: base +#: selection:ir.property,type:0 +#: field:res.currency,date:0 +#: field:res.currency.rate,name:0 +#: field:res.partner,date:0 +#: field:res.partner.event,date:0 +#: field:res.request,date_sent:0 +msgid "Date" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,report_sxw:0 +msgid "SXW path" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +msgid "Data" +msgstr "" + +#. module: base +#: field:ir.ui.menu,parent_id:0 +#: field:wizard.ir.model.menu.create,menu_id:0 +msgid "Parent Menu" +msgstr "" + +#. module: base +#: field:ir.rule,perm_unlink:0 +msgid "Apply For Delete" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:319 +#, python-format +msgid "Cannot rename column to %s, because that column already exists!" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +msgid "Attached To" +msgstr "" + +#. module: base +#: field:res.lang,decimal_point:0 +msgid "Decimal Separator" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_res_groups +msgid "" +"A group is a set of functional areas that will be assigned to the user in " +"order to give them access and rights to specific applications and tasks in " +"the system. You can create custom groups or edit the ones existing by " +"default in order to customize the view of the menu that users will be able " +"to see. Whether they can have a read, write, create and delete access right " +"can be managed from here." +msgstr "" + +#. module: base +#: view:res.partner:0 +#: view:res.request:0 +#: field:res.request,history:0 +msgid "History" +msgstr "" + +#. module: base +#: field:ir.attachment,create_uid:0 +msgid "Creator" +msgstr "" + +#. module: base +#: model:res.company,overdue_msg:base.main_company +msgid "" +"Please note that the following payments are now due. If your payment " +" has been sent, kindly forward your payment details. If " +"payment will be delayed further, please contact us " +"to discuss. \n" +"Would your payment have been carried out after this mail was sent, please " +"consider the present one as void." +msgstr "" + +#. module: base +#: model:res.country,name:base.mx +msgid "Mexico" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_base_config_plugins +msgid "Plugins" +msgstr "" + +#. module: base +#: field:res.company,child_ids:0 +msgid "Child Companies" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_users +msgid "res.users" +msgstr "" + +#. module: base +#: model:res.country,name:base.ni +msgid "Nicaragua" +msgstr "" + +#. module: base +#: code:addons/orm.py:1046 +#, python-format +msgid "The write method is not implemented on this object !" +msgstr "" + +#. module: base +#: view:res.partner.event:0 +msgid "General Description" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_config_simple_view_form +#: view:res.config.view:0 +msgid "Configure Your Interface" +msgstr "" + +#. module: base +#: field:ir.values,meta:0 +msgid "Meta Datas" +msgstr "" + +#. module: base +#: sql_constraint:ir.ui.view_sc:0 +msgid "Shortcut for this menu already exists!" +msgstr "" + +#. module: base +#: model:res.country,name:base.ve +msgid "Venezuela" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "9. %j ==> 340" +msgstr "" + +#. module: base +#: model:res.country,name:base.zm +msgid "Zambia" +msgstr "" + +#. module: base +#: help:res.partner,user_id:0 +msgid "" +"The internal user that is in charge of communicating with this partner if " +"any." +msgstr "" + +#. module: base +#: field:res.partner,parent_id:0 +msgid "Parent Partner" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Cancel Upgrade" +msgstr "" + +#. module: base +#: model:res.country,name:base.ci +msgid "Ivory Coast (Cote D'Ivoire)" +msgstr "" + +#. module: base +#: model:res.country,name:base.kz +msgid "Kazakhstan" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%w - Weekday number [0(Sunday),6]." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_partner_form +msgid "" +"A customer is an entity you do business with, like a company or an " +"organization. A customer can have several contacts or addresses which are " +"the people working for this company. You can use the history tab, to follow " +"all transactions related to a customer: sales order, emails, opportunities, " +"claims, etc. If you use the email gateway, the Outlook or the Thunderbird " +"plugin, don't forget to register emails to each contact so that the gateway " +"will automatically attach incoming emails to the right partner." +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,name:0 +#: field:ir.actions.todo,name:0 +#: field:ir.cron,name:0 +#: field:ir.model.access,name:0 +#: field:ir.model.fields,name:0 +#: field:ir.module.category,name:0 +#: field:ir.module.module,name:0 +#: field:ir.module.module.dependency,name:0 +#: report:ir.module.reference.graph:0 +#: field:ir.property,name:0 +#: field:ir.rule,name:0 +#: field:ir.sequence,name:0 +#: field:ir.sequence.type,name:0 +#: field:ir.values,name:0 +#: field:multi_company.default,name:0 +#: field:res.bank,name:0 +#: field:res.config.view,name:0 +#: field:res.lang,name:0 +#: field:res.partner,name:0 +#: field:res.partner.bank.type,name:0 +#: view:res.partner.event:0 +#: field:res.request.link,name:0 +#: field:workflow,name:0 +#: field:workflow.activity,name:0 +msgid "Name" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,multi:0 +msgid "" +"If set to true, the action will not be displayed on the right toolbar of a " +"form view" +msgstr "" + +#. module: base +#: model:res.country,name:base.ms +msgid "Montserrat" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:205 +#, python-format +msgid "" +"The Selection Options expression is not a valid Pythonic expression.Please " +"provide an expression in the [('key','Label'), ...] format." +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_translation_app +msgid "Application Terms" +msgstr "" + +#. module: base +#: help:res.config.users,context_tz:0 +#: help:res.users,context_tz:0 +msgid "" +"The user's timezone, used to perform timezone conversions between the server " +"and the client." +msgstr "" + +#. module: base +#: field:ir.module.module,demo:0 +msgid "Demo data" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "English (UK)" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Japanese / 日本語" +msgstr "" + +#. module: base +#: help:workflow.transition,act_from:0 +msgid "" +"Source activity. When this activity is over, the condition is tested to " +"determine if we can start the ACT_TO activity." +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_3 +msgid "Starter Partner" +msgstr "" + +#. module: base +#: help:ir.model.fields,relation_field:0 +msgid "" +"For one2many fields, the field on the target model that implement the " +"opposite many2one relationship" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_act_window_view +msgid "ir.actions.act_window.view" +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "Web" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "English (CA)" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_publisher_warranty_contract +msgid "publisher_warranty.contract" +msgstr "" + +#. module: base +#: model:res.country,name:base.et +msgid "Ethiopia" +msgstr "" + +#. module: base +#: help:res.country.state,code:0 +msgid "The state code in three chars.\n" +msgstr "" + +#. module: base +#: model:res.country,name:base.sj +msgid "Svalbard and Jan Mayen Islands" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_wizard +#: selection:ir.ui.menu,action:0 +msgid "ir.actions.wizard" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +#: view:ir.actions.report.xml:0 +#: view:ir.actions.server:0 +#: view:ir.filters:0 +#: view:res.request:0 +msgid "Group By" +msgstr "" + +#. module: base +#: view:res.config:0 +#: view:res.config.installer:0 +msgid "title" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_base_language_install +msgid "Install Language" +msgstr "" + +#. module: base +#: view:ir.translation:0 +msgid "Translation" +msgstr "" + +#. module: base +#: selection:res.request,state:0 +msgid "closed" +msgstr "" + +#. module: base +#: selection:base.language.export,state:0 +msgid "get" +msgstr "" + +#. module: base +#: help:ir.model.fields,on_delete:0 +msgid "On delete property for many2one fields" +msgstr "" + +#. module: base +#: field:ir.actions.server,write_id:0 +msgid "Write Id" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_product +msgid "Products" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,domain:0 +#: field:ir.filters,domain:0 +msgid "Domain Value" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "SMS Configuration" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (BO) / Español (BO)" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_access_act +#: model:ir.ui.menu,name:base.menu_ir_access_act +msgid "Access Controls List" +msgstr "" + +#. module: base +#: model:res.country,name:base.um +msgid "USA Minor Outlying Islands" +msgstr "" + +#. module: base +#: field:res.partner.bank,state:0 +#: field:res.partner.bank.type.field,bank_type_id:0 +msgid "Bank Type" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:58 +#: code:addons/base/res/res_user.py:67 +#, python-format +msgid "The name of the group can not start with \"-\"" +msgstr "" + +#. module: base +#: view:ir.ui.view_sc:0 +#: field:res.partner.title,shortcut:0 +msgid "Shortcut" +msgstr "" + +#. module: base +#: field:ir.model.data,date_init:0 +msgid "Init Date" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Gujarati / ગુજરાતી" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:257 +#, python-format +msgid "" +"Unable to process module \"%s\" because an external dependency is not met: %s" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract.wizard:0 +msgid "Please enter the serial key provided in your contract document:" +msgstr "" + +#. module: base +#: view:workflow.activity:0 +#: field:workflow.activity,flow_start:0 +msgid "Flow Start" +msgstr "" + +#. module: base +#: code:addons/__init__.py:834 +#, python-format +msgid "module base cannot be loaded! (hint: verify addons-path)" +msgstr "" + +#. module: base +#: view:res.partner.bank:0 +msgid "Bank Account Owner" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.act_values_form +msgid "Client Actions Connections" +msgstr "" + +#. module: base +#: field:ir.attachment,res_name:0 +#: field:ir.ui.view_sc,resource:0 +msgid "Resource Name" +msgstr "" + +#. module: base +#: selection:ir.cron,interval_type:0 +msgid "Hours" +msgstr "" + +#. module: base +#: model:res.country,name:base.gp +msgid "Guadeloupe (French)" +msgstr "" + +#. module: base +#: code:addons/base/res/res_lang.py:157 +#: code:addons/base/res/res_lang.py:159 +#: code:addons/base/res/res_lang.py:161 +#, python-format +msgid "User Error" +msgstr "" + +#. module: base +#: help:workflow.transition,signal:0 +msgid "" +"When the operation of transition comes from a button pressed in the client " +"form, signal tests the name of the pressed button. If signal is NULL, no " +"button is necessary to validate this transition." +msgstr "" + +#. module: base +#: help:multi_company.default,object_id:0 +msgid "Object affected by this rule" +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "Directory" +msgstr "" + +#. module: base +#: field:wizard.ir.model.menu.create,name:0 +msgid "Menu Name" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Author Website" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +msgid "Month" +msgstr "" + +#. module: base +#: model:res.country,name:base.my +msgid "Malaysia" +msgstr "" + +#. module: base +#: view:base.language.install:0 +#: model:ir.actions.act_window,name:base.action_view_base_language_install +msgid "Load Official Translation" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_request_history +msgid "res.request.history" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Client Action Configuration" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_partner_address +#: view:res.partner.address:0 +msgid "Partner Addresses" +msgstr "" + +#. module: base +#: help:ir.model.fields,translate:0 +msgid "" +"Whether values for this field can be translated (enables the translation " +"mechanism for that field)" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%S - Seconds [00,61]." +msgstr "" + +#. module: base +#: model:res.country,name:base.cv +msgid "Cape Verde" +msgstr "" + +#. module: base +#: view:base.module.import:0 +msgid "Select module package to import (.zip file):" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.act_res_partner_event +#: field:res.partner,events:0 +#: field:res.partner.event,name:0 +#: model:res.widget,title:base.events_widget +msgid "Events" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_url +#: selection:ir.ui.menu,action:0 +msgid "ir.actions.url" +msgstr "" + +#. module: base +#: model:res.widget,title:base.currency_converter_widget +msgid "Currency Converter" +msgstr "" + +#. module: base +#: code:addons/orm.py:156 +#, python-format +msgid "Wrong ID for the browse record, got %r, expected an integer." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_addess_tree +#: view:res.partner:0 +msgid "Partner Contacts" +msgstr "" + +#. module: base +#: field:base.module.update,add:0 +msgid "Number of modules added" +msgstr "" + +#. module: base +#: view:res.currency:0 +msgid "Price Accuracy" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Latvian / latviešu valoda" +msgstr "" + +#. module: base +#: view:res.config:0 +#: view:res.config.installer:0 +msgid "vsep" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "French / Français" +msgstr "" + +#. module: base +#: code:addons/orm.py:1049 +#, python-format +msgid "The create method is not implemented on this object !" +msgstr "" + +#. module: base +#: field:workflow.triggers,workitem_id:0 +msgid "Workitem" +msgstr "" + +#. module: base +#: view:ir.actions.todo:0 +msgid "Set as Todo" +msgstr "" + +#. module: base +#: field:ir.actions.act_window.view,act_window_id:0 +#: view:ir.actions.actions:0 +#: field:ir.actions.todo,action_id:0 +#: field:ir.ui.menu,action:0 +#: field:ir.values,action_id:0 +#: selection:ir.values,key:0 +#: view:res.users:0 +msgid "Action" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Email Configuration" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_cron +msgid "ir.cron" +msgstr "" + +#. module: base +#: view:ir.rule:0 +msgid "Combination of rules" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Current Year without Century: %(y)s" +msgstr "" + +#. module: base +#: field:ir.actions.server,trigger_obj_id:0 +msgid "Trigger On" +msgstr "" + +#. module: base +#: sql_constraint:ir.rule:0 +msgid "Rule must have at least one checked access right !" +msgstr "" + +#. module: base +#: model:res.country,name:base.fj +msgid "Fiji" +msgstr "" + +#. module: base +#: field:ir.model.fields,size:0 +msgid "Size" +msgstr "" + +#. module: base +#: model:res.country,name:base.sd +msgid "Sudan" +msgstr "" + +#. module: base +#: model:res.country,name:base.fm +msgid "Micronesia" +msgstr "" + +#. module: base +#: view:res.request.history:0 +msgid "Request History" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,menus:0 +#: field:ir.module.module,menus_by_module:0 +#: view:res.groups:0 +msgid "Menus" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Serbian (Latin) / srpski" +msgstr "" + +#. module: base +#: model:res.country,name:base.il +msgid "Israel" +msgstr "" + +#. module: base +#: model:ir.actions.wizard,name:base.wizard_server_action_create +msgid "Create Action" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_model_model +#: model:ir.model,name:base.model_ir_model +#: model:ir.ui.menu,name:base.ir_model_model_menu +msgid "Objects" +msgstr "" + +#. module: base +#: field:res.lang,time_format:0 +msgid "Time Format" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Defined Reports" +msgstr "" + +#. module: base +#: view:ir.actions.report.xml:0 +msgid "Report xml" +msgstr "" + +#. module: base +#: field:base.language.export,modules:0 +#: model:ir.actions.act_window,name:base.action_module_open_categ +#: model:ir.actions.act_window,name:base.open_module_tree +#: view:ir.module.module:0 +#: model:ir.ui.menu,name:base.menu_management +#: model:ir.ui.menu,name:base.menu_module_tree +msgid "Modules" +msgstr "" + +#. module: base +#: view:workflow.activity:0 +#: selection:workflow.activity,kind:0 +#: field:workflow.activity,subflow_id:0 +#: field:workflow.workitem,subflow_id:0 +msgid "Subflow" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_config +msgid "res.config" +msgstr "" + +#. module: base +#: field:workflow.transition,signal:0 +msgid "Signal (button Name)" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_res_bank_form +#: model:ir.ui.menu,name:base.menu_action_res_bank_form +#: view:res.bank:0 +#: field:res.partner,bank_ids:0 +msgid "Banks" +msgstr "" + +#. module: base +#: view:res.log:0 +msgid "Unread" +msgstr "" + +#. module: base +#: field:ir.cron,doall:0 +msgid "Repeat Missed" +msgstr "" + +#. module: base +#: help:ir.actions.server,state:0 +msgid "Type of the Action that is to be executed" +msgstr "" + +#. module: base +#: field:ir.server.object.lines,server_id:0 +msgid "Object Mapping" +msgstr "" + +#. module: base +#: help:res.currency,rate:0 +#: help:res.currency.rate,rate:0 +msgid "The rate of the currency to the currency of rate 1" +msgstr "" + +#. module: base +#: model:res.country,name:base.uk +msgid "United Kingdom" +msgstr "" + +#. module: base +#: view:res.config:0 +#: view:res.config.users:0 +#: view:res.config.view:0 +msgid "res_config_contents" +msgstr "" + +#. module: base +#: help:res.partner.category,active:0 +msgid "The active field allows you to hide the category without removing it." +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "Object:" +msgstr "" + +#. module: base +#: model:res.country,name:base.bw +msgid "Botswana" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_title_partner +#: model:ir.ui.menu,name:base.menu_partner_title_partner +#: view:res.partner.title:0 +msgid "Partner Titles" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,auto_refresh:0 +msgid "Add an auto-refresh on the view" +msgstr "" + +#. module: base +#: help:res.partner,employee:0 +msgid "Check this box if the partner is an Employee." +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,report_rml_content:0 +#: field:ir.actions.report.xml,report_rml_content_data:0 +msgid "RML content" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_workflow_workitem_form +#: model:ir.ui.menu,name:base.menu_workflow_workitem +msgid "Workitems" +msgstr "" + +#. module: base +#: field:base.language.export,advice:0 +msgid "Advice" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_attachment +msgid "ir.attachment" +msgstr "" + +#. module: base +#: code:addons/orm.py:3533 +#, python-format +msgid "" +"You cannot perform this operation. New Record Creation is not allowed for " +"this object as this object is for reporting purpose." +msgstr "" + +#. module: base +#: view:base.language.import:0 +msgid "- module,type,name,res_id,src,value" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Lithuanian / Lietuvių kalba" +msgstr "" + +#. module: base +#: help:ir.actions.server,record_id:0 +msgid "" +"Provide the field name where the record id is stored after the create " +"operations. If it is empty, you can not track the new record." +msgstr "" + +#. module: base +#: help:ir.model.fields,relation:0 +msgid "For relationship fields, the technical name of the target model" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Indonesian / Bahasa Indonesia" +msgstr "" + +#. module: base +#: field:ir.ui.view,inherit_id:0 +msgid "Inherited View" +msgstr "" + +#. module: base +#: view:ir.translation:0 +msgid "Source Term" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_main_pm +msgid "Project" +msgstr "" + +#. module: base +#: field:ir.ui.menu,web_icon_hover_data:0 +msgid "Web Icon Image (hover)" +msgstr "" + +#. module: base +#: view:base.module.import:0 +msgid "Module file successfully imported!" +msgstr "" + +#. module: base +#: selection:ir.actions.todo,state:0 +msgid "Cancelled" +msgstr "" + +#. module: base +#: view:res.config.users:0 +msgid "Create User" +msgstr "" + +#. module: base +#: view:partner.clear.ids:0 +msgid "Want to Clear Ids ? " +msgstr "" + +#. module: base +#: field:publisher_warranty.contract,name:0 +#: field:publisher_warranty.contract.wizard,name:0 +msgid "Serial Key" +msgstr "" + +#. module: base +#: selection:res.request,priority:0 +msgid "Low" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_audit +msgid "Audit" +msgstr "" + +#. module: base +#: model:res.country,name:base.lc +msgid "Saint Lucia" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract:0 +msgid "Maintenance Contract" +msgstr "" + +#. module: base +#: help:ir.actions.server,trigger_obj_id:0 +msgid "Select the object from the model on which the workflow will executed." +msgstr "" + +#. module: base +#: field:res.partner,employee:0 +msgid "Employee" +msgstr "" + +#. module: base +#: field:ir.model.access,perm_create:0 +msgid "Create Access" +msgstr "" + +#. module: base +#: field:res.partner.address,state_id:0 +msgid "Fed. State" +msgstr "" + +#. module: base +#: field:ir.actions.server,copy_object:0 +msgid "Copy Of" +msgstr "" + +#. module: base +#: field:ir.model,osv_memory:0 +msgid "In-memory model" +msgstr "" + +#. module: base +#: view:partner.clear.ids:0 +msgid "Clear Ids" +msgstr "" + +#. module: base +#: model:res.country,name:base.io +msgid "British Indian Ocean Territory" +msgstr "" + +#. module: base +#: field:res.config.users,view:0 +#: field:res.config.view,view:0 +#: field:res.users,view:0 +msgid "Interface" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Field Mapping" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract:0 +msgid "Refresh Validation Dates" +msgstr "" + +#. module: base +#: view:ir.model:0 +#: field:ir.model.fields,ttype:0 +msgid "Field Type" +msgstr "" + +#. module: base +#: field:res.country.state,code:0 +msgid "State Code" +msgstr "" + +#. module: base +#: field:ir.model.fields,on_delete:0 +msgid "On delete" +msgstr "" + +#. module: base +#: selection:res.lang,direction:0 +msgid "Left-to-Right" +msgstr "" + +#. module: base +#: view:res.lang:0 +#: field:res.lang,translatable:0 +msgid "Translatable" +msgstr "" + +#. module: base +#: model:res.country,name:base.vn +msgid "Vietnam" +msgstr "" + +#. module: base +#: field:res.config.users,signature:0 +#: view:res.users:0 +#: field:res.users,signature:0 +msgid "Signature" +msgstr "" + +#. module: base +#: code:addons/fields.py:456 +#: code:addons/fields.py:654 +#: code:addons/fields.py:656 +#: code:addons/fields.py:658 +#: code:addons/fields.py:660 +#: code:addons/fields.py:662 +#: code:addons/fields.py:664 +#, python-format +msgid "Not Implemented" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_widget_user +msgid "res.widget.user" +msgstr "" + +#. module: base +#: field:res.partner.category,complete_name:0 +msgid "Full Name" +msgstr "" + +#. module: base +#: view:base.module.configuration:0 +msgid "_Ok" +msgstr "" + +#. module: base +#: help:ir.filters,user_id:0 +msgid "False means for every user" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:198 +#, python-format +msgid "The name of the module must be unique !" +msgstr "" + +#. module: base +#: model:res.country,name:base.mz +msgid "Mozambique" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_project_long_term +msgid "Long Term Planning" +msgstr "" + +#. module: base +#: field:ir.actions.server,message:0 +#: view:partner.sms.send:0 +#: field:partner.wizard.spam,text:0 +#: field:res.log,name:0 +msgid "Message" +msgstr "" + +#. module: base +#: field:ir.actions.act_window.view,multi:0 +msgid "On Multiple Doc." +msgstr "" + +#. module: base +#: view:res.partner:0 +#: field:res.partner,user_id:0 +msgid "Salesman" +msgstr "" + +#. module: base +#: field:res.partner,address:0 +#: view:res.partner.address:0 +msgid "Contacts" +msgstr "" + +#. module: base +#: code:addons/orm.py:3199 +#, python-format +msgid "" +"Unable to delete this document because it is used as a default property" +msgstr "" + +#. module: base +#: view:res.widget.wizard:0 +msgid "Add" +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +#: model:ir.actions.act_window,name:base.action_view_base_module_upgrade_window +#: model:ir.ui.menu,name:base.menu_view_base_module_upgrade +msgid "Apply Scheduled Upgrades" +msgstr "" + +#. module: base +#: view:res.widget:0 +msgid "Widgets" +msgstr "" + +#. module: base +#: model:res.country,name:base.cz +msgid "Czech Republic" +msgstr "" + +#. module: base +#: view:res.widget.wizard:0 +msgid "Widget Wizard" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.act_ir_actions_todo_form +msgid "" +"The configuration wizards are used to help you configure a new instance of " +"OpenERP. They are launched during the installation of new modules, but you " +"can choose to restart some wizards manually from this menu." +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:206 +#, python-format +msgid "" +"Please use the change password wizard (in User Preferences or User menu) to " +"change your own password." +msgstr "" + +#. module: base +#: code:addons/orm.py:1350 +#, python-format +msgid "Insufficient fields for Calendar View!" +msgstr "" + +#. module: base +#: selection:ir.property,type:0 +msgid "Integer" +msgstr "" + +#. module: base +#: help:ir.actions.report.xml,report_rml:0 +msgid "" +"The path to the main report file (depending on Report Type) or NULL if the " +"content is in another data field" +msgstr "" + +#. module: base +#: help:res.config.users,company_id:0 +#: help:res.users,company_id:0 +msgid "The company this user is currently working for." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_wizard_ir_model_menu_create +msgid "wizard.ir.model.menu.create" +msgstr "" + +#. module: base +#: view:workflow.transition:0 +msgid "Transition" +msgstr "" + +#. module: base +#: field:res.groups,menu_access:0 +msgid "Access Menu" +msgstr "" + +#. module: base +#: model:res.country,name:base.na +msgid "Namibia" +msgstr "" + +#. module: base +#: model:res.country,name:base.mn +msgid "Mongolia" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Created Menus" +msgstr "" + +#. module: base +#: selection:ir.ui.view,type:0 +msgid "mdx" +msgstr "" + +#. module: base +#: model:res.country,name:base.bi +msgid "Burundi" +msgstr "" + +#. module: base +#: view:base.language.install:0 +#: view:base.module.import:0 +#: view:base.module.update:0 +#: view:publisher_warranty.contract.wizard:0 +#: view:res.request:0 +#: wizard_button:server.action.create,init,end:0 +#: wizard_button:server.action.create,step_1,end:0 +msgid "Close" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (MX) / Español (MX)" +msgstr "" + +#. module: base +#: view:res.log:0 +msgid "My Logs" +msgstr "" + +#. module: base +#: model:res.country,name:base.bt +msgid "Bhutan" +msgstr "" + +#. module: base +#: help:ir.sequence,number_next:0 +msgid "Next number of this sequence" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_11 +msgid "Textile Suppliers" +msgstr "" + +#. module: base +#: selection:ir.actions.url,target:0 +msgid "This Window" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract:0 +msgid "Publisher Warranty Contracts" +msgstr "" + +#. module: base +#: help:res.log,name:0 +msgid "The logging message." +msgstr "" + +#. module: base +#: field:base.language.export,format:0 +msgid "File Format" +msgstr "" + +#. module: base +#: field:res.lang,iso_code:0 +msgid "ISO code" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_config_view +msgid "res.config.view" +msgstr "" + +#. module: base +#: view:res.log:0 +#: field:res.log,read:0 +msgid "Read" +msgstr "" + +#. module: base +#: sql_constraint:res.country:0 +msgid "The name of the country must be unique !" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_country_state +msgid "" +"If you are working on the American market, you can manage the different " +"federal states you are working on from here. Each state is attached to one " +"country." +msgstr "" + +#. module: base +#: view:workflow.workitem:0 +msgid "Workflow Workitems" +msgstr "" + +#. module: base +#: model:res.country,name:base.vc +msgid "Saint Vincent & Grenadines" +msgstr "" + +#. module: base +#: field:partner.sms.send,password:0 +#: field:res.config.users,password:0 +#: field:res.users,password:0 +msgid "Password" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_model_fields +#: view:ir.model:0 +#: field:ir.model,field_id:0 +#: model:ir.model,name:base.model_ir_model_fields +#: view:ir.model.fields:0 +#: model:ir.ui.menu,name:base.ir_model_model_fields +msgid "Fields" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_employee_form +msgid "Employees" +msgstr "" + +#. module: base +#: help:res.log,read:0 +msgid "" +"If this log item has been read, get() should not send it to the client" +msgstr "" + +#. module: base +#: field:res.company,rml_header2:0 +#: field:res.company,rml_header3:0 +msgid "RML Internal Header" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,search_view_id:0 +msgid "Search View Ref." +msgstr "" + +#. module: base +#: field:ir.module.module,installed_version:0 +msgid "Latest version" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.res_partner_canal-act +msgid "" +"Track from where is coming your leads and opportunities by creating specific " +"channels that will be maintained at the creation of a document in the " +"system. Some examples of channels can be: Website, Phone Call, Reseller, etc." +msgstr "" + +#. module: base +#: model:res.partner.bank.type.field,name:base.bank_normal_field +msgid "acc_number" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_address_form +#: model:ir.ui.menu,name:base.menu_partner_address_form +msgid "Addresses" +msgstr "" + +#. module: base +#: model:res.country,name:base.mm +msgid "Myanmar" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Chinese (CN) / 简体中文" +msgstr "" + +#. module: base +#: field:res.bank,street:0 +#: field:res.partner.address,street:0 +#: field:res.partner.bank,street:0 +msgid "Street" +msgstr "" + +#. module: base +#: model:res.country,name:base.yu +msgid "Yugoslavia" +msgstr "" + +#. module: base +#: field:ir.model.data,name:0 +msgid "XML Identifier" +msgstr "" + +#. module: base +#: model:res.country,name:base.ca +msgid "Canada" +msgstr "" + +#. module: base +#: selection:ir.module.module.dependency,state:0 +msgid "Unknown" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_res_users_my +msgid "Change My Preferences" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_actions.py:164 +#, python-format +msgid "Invalid model name in the action definition." +msgstr "" + +#. module: base +#: field:partner.sms.send,text:0 +msgid "SMS Message" +msgstr "" + +#. module: base +#: model:res.country,name:base.cm +msgid "Cameroon" +msgstr "" + +#. module: base +#: model:res.country,name:base.bf +msgid "Burkina Faso" +msgstr "" + +#. module: base +#: selection:ir.actions.todo,state:0 +msgid "Skipped" +msgstr "" + +#. module: base +#: selection:ir.model.fields,state:0 +msgid "Custom Field" +msgstr "" + +#. module: base +#: field:ir.module.module,web:0 +msgid "Has a web component" +msgstr "" + +#. module: base +#: model:res.country,name:base.cc +msgid "Cocos (Keeling) Islands" +msgstr "" + +#. module: base +#: selection:base.language.install,state:0 +#: selection:base.module.import,state:0 +#: selection:base.module.update,state:0 +msgid "init" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "11. %U or %W ==> 48 (49th week)" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_partner_bank_type_field +msgid "Bank type fields" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Dutch / Nederlands" +msgstr "" + +#. module: base +#: code:addons/base/res/res_config.py:384 +#, python-format +msgid "" +"\n" +"\n" +"This addon is already installed on your system" +msgstr "" + +#. module: base +#: help:ir.cron,interval_number:0 +msgid "Repeat every x." +msgstr "" + +#. module: base +#: wizard_view:server.action.create,step_1:0 +#: wizard_field:server.action.create,step_1,report:0 +msgid "Select Report" +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "1cm 28cm 20cm 28cm" +msgstr "" + +#. module: base +#: field:ir.module.module,maintainer:0 +msgid "Maintainer" +msgstr "" + +#. module: base +#: field:ir.sequence,suffix:0 +msgid "Suffix" +msgstr "" + +#. module: base +#: model:res.country,name:base.mo +msgid "Macau" +msgstr "" + +#. module: base +#: model:ir.actions.report.xml,name:base.res_partner_address_report +msgid "Labels" +msgstr "" + +#. module: base +#: field:partner.wizard.spam,email_from:0 +msgid "Sender's email" +msgstr "" + +#. module: base +#: field:ir.default,field_name:0 +msgid "Object Field" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (PE) / Español (PE)" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "French (CH) / Français (CH)" +msgstr "" + +#. module: base +#: help:res.config.users,action_id:0 +#: help:res.users,action_id:0 +msgid "" +"If specified, this action will be opened at logon for this user, in addition " +"to the standard menu." +msgstr "" + +#. module: base +#: view:ir.values:0 +msgid "Client Actions" +msgstr "" + +#. module: base +#: code:addons/orm.py:1806 +#, python-format +msgid "The exists method is not implemented on this object !" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:336 +#, python-format +msgid "" +"You try to upgrade a module that depends on the module: %s.\n" +"But this module is not available in your system." +msgstr "" + +#. module: base +#: field:workflow.transition,act_to:0 +msgid "Destination Activity" +msgstr "" + +#. module: base +#: view:ir.values:0 +msgid "Connect Events to Actions" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_base_update_translations +msgid "base.update.translations" +msgstr "" + +#. module: base +#: field:ir.module.category,parent_id:0 +#: field:res.partner.category,parent_id:0 +msgid "Parent Category" +msgstr "" + +#. module: base +#: selection:ir.property,type:0 +msgid "Integer Big" +msgstr "" + +#. module: base +#: selection:res.partner.address,type:0 +#: selection:res.partner.title,domain:0 +#: view:res.users:0 +msgid "Contact" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_ui_menu +msgid "ir.ui.menu" +msgstr "" + +#. module: base +#: model:res.country,name:base.us +msgid "United States" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Cancel Uninstall" +msgstr "" + +#. module: base +#: view:res.bank:0 +#: view:res.partner:0 +#: view:res.partner.address:0 +msgid "Communication" +msgstr "" + +#. module: base +#: view:ir.actions.report.xml:0 +msgid "RML Report" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_server_object_lines +msgid "ir.server.object.lines" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:531 +#, python-format +msgid "Module %s: Invalid Quality Certificate" +msgstr "" + +#. module: base +#: model:res.country,name:base.kw +msgid "Kuwait" +msgstr "" + +#. module: base +#: field:workflow.workitem,inst_id:0 +msgid "Instance" +msgstr "" + +#. module: base +#: help:ir.actions.report.xml,attachment:0 +msgid "" +"This is the filename of the attachment used to store the printing result. " +"Keep empty to not save the printed reports. You can use a python expression " +"with the object and time variables." +msgstr "" + +#. module: base +#: selection:ir.property,type:0 +msgid "Many2One" +msgstr "" + +#. module: base +#: model:res.country,name:base.ng +msgid "Nigeria" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:250 +#, python-format +msgid "For selection fields, the Selection Options must be given!" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_sms_send +msgid "SMS Send" +msgstr "" + +#. module: base +#: field:res.company,user_ids:0 +msgid "Accepted Users" +msgstr "" + +#. module: base +#: field:ir.ui.menu,web_icon_data:0 +msgid "Web Icon Image" +msgstr "" + +#. module: base +#: view:ir.values:0 +msgid "Values for Event Type" +msgstr "" + +#. module: base +#: selection:ir.model.fields,select_level:0 +msgid "Always Searchable" +msgstr "" + +#. module: base +#: model:res.country,name:base.hk +msgid "Hong Kong" +msgstr "" + +#. module: base +#: help:ir.actions.server,name:0 +msgid "Easy to Refer action by name e.g. One Sales Order -> Many Invoices" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_partner_address_form +msgid "" +"Customers (also called Partners in other areas of the system) helps you " +"manage your address book of companies whether they are prospects, customers " +"and/or suppliers. The partner form allows you to track and record all the " +"necessary information to interact with your partners from the company " +"address to their contacts as well as pricelists, and much more. If you " +"installed the CRM, with the history tab, you can track all the interactions " +"with a partner such as opportunities, emails, or sales orders issued." +msgstr "" + +#. module: base +#: model:res.country,name:base.ph +msgid "Philippines" +msgstr "" + +#. module: base +#: model:res.country,name:base.ma +msgid "Morocco" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "2. %a ,%A ==> Fri, Friday" +msgstr "" + +#. module: base +#: field:res.widget,content:0 +msgid "Content" +msgstr "" + +#. module: base +#: help:ir.rule,global:0 +msgid "If no group is specified the rule is global and applied to everyone" +msgstr "" + +#. module: base +#: model:res.country,name:base.td +msgid "Chad" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_workflow_transition +msgid "workflow.transition" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%a - Abbreviated weekday name." +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "Introspection report on objects" +msgstr "" + +#. module: base +#: model:res.country,name:base.pf +msgid "Polynesia (French)" +msgstr "" + +#. module: base +#: model:res.country,name:base.dm +msgid "Dominica" +msgstr "" + +#. module: base +#: sql_constraint:publisher_warranty.contract:0 +msgid "" +"Your publisher warranty contract is already subscribed in the system !" +msgstr "" + +#. module: base +#: help:ir.cron,nextcall:0 +msgid "Next planned execution date for this scheduler" +msgstr "" + +#. module: base +#: help:res.config.users,view:0 +#: help:res.users,view:0 +msgid "Choose between the simplified interface and the extended one" +msgstr "" + +#. module: base +#: model:res.country,name:base.np +msgid "Nepal" +msgstr "" + +#. module: base +#: code:addons/orm.py:2307 +#, python-format +msgid "" +"Invalid value for reference field \"%s\" (last part must be a non-zero " +"integer): \"%s\"" +msgstr "" + +#. module: base +#: help:ir.cron,args:0 +msgid "Arguments to be passed to the method. e.g. (uid,)" +msgstr "" + +#. module: base +#: help:ir.ui.menu,groups_id:0 +msgid "" +"If you have groups, the visibility of this menu will be based on these " +"groups. If this field is empty, OpenERP will compute visibility based on the " +"related object's read access." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_ui_view_custom +#: model:ir.ui.menu,name:base.menu_action_ui_view_custom +#: view:ir.ui.view.custom:0 +msgid "Customized Views" +msgstr "" + +#. module: base +#: view:partner.sms.send:0 +msgid "Bulk SMS send" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Seconde: %(sec)s" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_view_base_module_update +msgid "Update Modules List" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:255 +#, python-format +msgid "" +"Unable to upgrade module \"%s\" because an external dependency is not met: %s" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:257 +#, python-format +msgid "" +"Please keep in mind that documents currently displayed may not be relevant " +"after switching to another company. If you have unsaved changes, please make " +"sure to save and close all forms before switching to a different company. " +"(You can click on Cancel in the User Preferences now)" +msgstr "" + +#. module: base +#: view:ir.actions.configuration.wizard:0 +msgid "Continue" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Thai / ภาษาไทย" +msgstr "" + +#. module: base +#: code:addons/orm.py:158 +#, python-format +msgid "Object %s does not exists" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Slovenian / slovenščina" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,attachment_use:0 +msgid "Reload from Attachment" +msgstr "" + +#. module: base +#: model:res.country,name:base.bv +msgid "Bouvet Island" +msgstr "" + +#. module: base +#: field:ir.attachment,name:0 +msgid "Attachment Name" +msgstr "" + +#. module: base +#: field:base.language.export,data:0 +#: field:base.language.import,data:0 +msgid "File" +msgstr "" + +#. module: base +#: view:res.config.users:0 +msgid "Add User" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_view_base_module_upgrade_install +msgid "Module Upgrade Install" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_configuration_wizard +msgid "ir.actions.configuration.wizard" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%b - Abbreviated month name." +msgstr "" + +#. module: base +#: field:res.partner,supplier:0 +#: view:res.partner.address:0 +#: field:res.partner.address,is_supplier_add:0 +#: model:res.partner.category,name:base.res_partner_category_8 +msgid "Supplier" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +#: selection:ir.actions.server,state:0 +msgid "Multi Actions" +msgstr "" + +#. module: base +#: view:base.language.export:0 +#: view:base.language.import:0 +#: view:wizard.ir.model.menu.create:0 +msgid "_Close" +msgstr "" + +#. module: base +#: field:multi_company.default,company_dest_id:0 +msgid "Default Company" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (EC) / Español (EC)" +msgstr "" + +#. module: base +#: help:ir.ui.view,xml_id:0 +msgid "ID of the view defined in xml file" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_base_module_import +#: model:ir.ui.menu,name:base.menu_view_base_module_import +msgid "Import Module" +msgstr "" + +#. module: base +#: model:res.country,name:base.as +msgid "American Samoa" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,res_model:0 +msgid "Model name of the object to open in the view window" +msgstr "" + +#. module: base +#: field:res.log,secondary:0 +msgid "Secondary Log" +msgstr "" + +#. module: base +#: field:ir.model.fields,selectable:0 +msgid "Selectable" +msgstr "" + +#. module: base +#: view:res.request.link:0 +msgid "Request Link" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +#: selection:ir.attachment,type:0 +#: field:ir.module.module,url:0 +msgid "URL" +msgstr "" + +#. module: base +#: help:res.country,name:0 +msgid "The full name of the country." +msgstr "" + +#. module: base +#: selection:ir.actions.server,state:0 +msgid "Iteration" +msgstr "" + +#. module: base +#: code:addons/orm.py:3448 +#: code:addons/orm.py:3532 +#, python-format +msgid "UserError" +msgstr "" + +#. module: base +#: model:res.country,name:base.ae +msgid "United Arab Emirates" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_crm_case_job_req_main +msgid "Recruitment" +msgstr "" + +#. module: base +#: model:res.country,name:base.re +msgid "Reunion (French)" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:321 +#, python-format +msgid "" +"New column name must still start with x_ , because it is a custom field!" +msgstr "" + +#. module: base +#: view:ir.model.access:0 +#: view:ir.rule:0 +#: field:ir.rule,global:0 +msgid "Global" +msgstr "" + +#. module: base +#: model:res.country,name:base.mp +msgid "Northern Mariana Islands" +msgstr "" + +#. module: base +#: model:res.country,name:base.sb +msgid "Solomon Islands" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:490 +#: code:addons/orm.py:1897 +#: code:addons/orm.py:2972 +#: code:addons/orm.py:3165 +#: code:addons/orm.py:3365 +#: code:addons/orm.py:3817 +#, python-format +msgid "AccessError" +msgstr "" + +#. module: base +#: view:res.request:0 +msgid "Waiting" +msgstr "" + +#. module: base +#: code:addons/__init__.py:834 +#, python-format +msgid "Could not load base module" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "8. %I:%M:%S %p ==> 06:25:20 PM" +msgstr "" + +#. module: base +#: code:addons/orm.py:1803 +#, python-format +msgid "The copy method is not implemented on this object !" +msgstr "" + +#. module: base +#: field:res.log,create_date:0 +msgid "Creation Date" +msgstr "" + +#. module: base +#: view:ir.translation:0 +#: model:ir.ui.menu,name:base.menu_translation +msgid "Translations" +msgstr "" + +#. module: base +#: field:ir.sequence,padding:0 +msgid "Number padding" +msgstr "" + +#. module: base +#: view:ir.actions.report.xml:0 +msgid "Report" +msgstr "" + +#. module: base +#: model:res.country,name:base.ua +msgid "Ukraine" +msgstr "" + +#. module: base +#: model:res.country,name:base.to +msgid "Tonga" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_module_category +#: view:ir.module.category:0 +msgid "Module Category" +msgstr "" + +#. module: base +#: view:partner.wizard.ean.check:0 +msgid "Ignore" +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "Reference Guide" +msgstr "" + +#. module: base +#: view:ir.ui.view:0 +msgid "Architecture" +msgstr "" + +#. module: base +#: model:res.country,name:base.ml +msgid "Mali" +msgstr "" + +#. module: base +#: help:res.config.users,email:0 +#: help:res.users,email:0 +msgid "" +"If an email is provided, the user will be sent a message welcoming him.\n" +"\n" +"Warning: if \"email_from\" and \"smtp_server\" aren't configured, it won't " +"be possible to email new users." +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Flemish (BE) / Vlaams (BE)" +msgstr "" + +#. module: base +#: field:ir.cron,interval_number:0 +msgid "Interval Number" +msgstr "" + +#. module: base +#: model:res.country,name:base.tk +msgid "Tokelau" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,report_xsl:0 +msgid "XSL path" +msgstr "" + +#. module: base +#: model:res.country,name:base.bn +msgid "Brunei Darussalam" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +#: field:ir.actions.act_window,view_type:0 +#: field:ir.actions.act_window.view,view_mode:0 +#: field:ir.ui.view,type:0 +#: field:wizard.ir.model.menu.create.line,view_type:0 +msgid "View Type" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.next_id_2 +msgid "User Interface" +msgstr "" + +#. module: base +#: field:ir.attachment,create_date:0 +msgid "Date Created" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_todo +msgid "ir.actions.todo" +msgstr "" + +#. module: base +#: code:addons/base/res/res_config.py:94 +#, python-format +msgid "Couldn't find previous ir.actions.todo" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +msgid "General Settings" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_administration_shortcut +msgid "Custom Shortcuts" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Vietnamese / Tiếng Việt" +msgstr "" + +#. module: base +#: model:res.country,name:base.dz +msgid "Algeria" +msgstr "" + +#. module: base +#: model:res.country,name:base.be +msgid "Belgium" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_osv_memory_autovacuum +msgid "osv_memory.autovacuum" +msgstr "" + +#. module: base +#: field:base.language.export,lang:0 +#: field:base.language.install,lang:0 +#: field:base.update.translations,lang:0 +#: field:ir.translation,lang:0 +#: field:res.config.users,context_lang:0 +#: field:res.partner,lang:0 +#: field:res.users,context_lang:0 +msgid "Language" +msgstr "" + +#. module: base +#: model:res.country,name:base.gm +msgid "Gambia" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_res_company_form +#: model:ir.model,name:base.model_res_company +#: model:ir.ui.menu,name:base.menu_action_res_company_form +#: model:ir.ui.menu,name:base.menu_res_company_global +#: view:res.company:0 +#: field:res.config.users,company_ids:0 +#: view:res.users:0 +#: field:res.users,company_ids:0 +msgid "Companies" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%H - Hour (24-hour clock) [00,23]." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_widget +msgid "res.widget" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:258 +#, python-format +msgid "Model %s does not exist!" +msgstr "" + +#. module: base +#: code:addons/base/res/res_lang.py:159 +#, python-format +msgid "You cannot delete the language which is User's Preferred Language !" +msgstr "" + +#. module: base +#: code:addons/fields.py:103 +#, python-format +msgid "Not implemented get_memory method !" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +#: field:ir.actions.server,code:0 +#: selection:ir.actions.server,state:0 +msgid "Python Code" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_module_import.py:67 +#, python-format +msgid "Can not create the module file: %s !" +msgstr "" + +#. module: base +#: model:ir.module.module,description:base.module_meta_information +msgid "The kernel of OpenERP, needed for all installation." +msgstr "" + +#. module: base +#: view:base.language.install:0 +#: view:base.module.import:0 +#: view:base.module.update:0 +#: view:base.module.upgrade:0 +#: view:base.update.translations:0 +#: view:partner.clear.ids:0 +#: view:partner.sms.send:0 +#: view:partner.wizard.spam:0 +#: view:publisher_warranty.contract.wizard:0 +#: view:res.widget.wizard:0 +msgid "Cancel" +msgstr "" + +#. module: base +#: selection:base.language.export,format:0 +msgid "PO File" +msgstr "" + +#. module: base +#: model:res.country,name:base.nt +msgid "Neutral Zone" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Hindi / हिंदी" +msgstr "" + +#. module: base +#: view:ir.model:0 +msgid "Custom" +msgstr "" + +#. module: base +#: view:res.request:0 +msgid "Current" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_9 +msgid "Components Supplier" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_res_users +#: field:ir.default,uid:0 +#: model:ir.ui.menu,name:base.menu_action_res_users +#: model:ir.ui.menu,name:base.menu_users +#: view:res.groups:0 +#: field:res.groups,users:0 +#: view:res.users:0 +msgid "Users" +msgstr "" + +#. module: base +#: field:ir.module.module,published_version:0 +msgid "Published Version" +msgstr "" + +#. module: base +#: model:res.country,name:base.is +msgid "Iceland" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_action_window +#: model:ir.ui.menu,name:base.menu_ir_action_window +msgid "Window Actions" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%I - Hour (12-hour clock) [01,12]." +msgstr "" + +#. module: base +#: selection:publisher_warranty.contract.wizard,state:0 +msgid "Finished" +msgstr "" + +#. module: base +#: model:res.country,name:base.de +msgid "Germany" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Week of the year: %(woy)s" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_14 +msgid "Bad customers" +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "Reports :" +msgstr "" + +#. module: base +#: model:res.country,name:base.gy +msgid "Guyana" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,view_type:0 +msgid "" +"View type: set to 'tree' for a hierarchical tree view, or 'form' for other " +"views" +msgstr "" + +#. module: base +#: code:addons/base/res/res_config.py:421 +#, python-format +msgid "Click 'Continue' to configure the next addon..." +msgstr "" + +#. module: base +#: field:ir.actions.server,record_id:0 +msgid "Create Id" +msgstr "" + +#. module: base +#: model:res.country,name:base.hn +msgid "Honduras" +msgstr "" + +#. module: base +#: help:res.config.users,menu_tips:0 +#: help:res.users,menu_tips:0 +msgid "" +"Check out this box if you want to always display tips on each menu action" +msgstr "" + +#. module: base +#: model:res.country,name:base.eg +msgid "Egypt" +msgstr "" + +#. module: base +#: field:ir.rule,perm_read:0 +msgid "Apply For Read" +msgstr "" + +#. module: base +#: help:ir.actions.server,model_id:0 +msgid "" +"Select the object on which the action will work (read, write, create)." +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_actions.py:629 +#, python-format +msgid "Please specify server option --email-from !" +msgstr "" + +#. module: base +#: field:base.language.import,name:0 +msgid "Language Name" +msgstr "" + +#. module: base +#: selection:ir.property,type:0 +msgid "Boolean" +msgstr "" + +#. module: base +#: view:ir.model:0 +msgid "Fields Description" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +#: view:ir.cron:0 +#: view:ir.model.access:0 +#: view:ir.model.data:0 +#: view:ir.model.fields:0 +#: view:ir.module.module:0 +#: view:ir.rule:0 +#: view:ir.ui.view:0 +#: view:ir.values:0 +#: view:res.partner:0 +#: view:res.partner.address:0 +#: view:workflow.activity:0 +msgid "Group By..." +msgstr "" + +#. module: base +#: view:ir.model.fields:0 +#: field:ir.model.fields,readonly:0 +#: field:res.partner.bank.type.field,readonly:0 +msgid "Readonly" +msgstr "" + +#. module: base +#: field:ir.actions.act_window.view,view_id:0 +#: field:ir.default,page:0 +#: selection:ir.translation,type:0 +#: field:wizard.ir.model.menu.create.line,view_id:0 +msgid "View" +msgstr "" + +#. module: base +#: selection:ir.module.module,state:0 +#: selection:ir.module.module.dependency,state:0 +msgid "To be installed" +msgstr "" + +#. module: base +#: help:ir.actions.act_window,display_menu_tip:0 +msgid "" +"It gives the status if the tip has to be displayed or not when a user " +"executes an action" +msgstr "" + +#. module: base +#: view:ir.model:0 +#: model:ir.module.module,shortdesc:base.module_meta_information +#: field:res.currency,base:0 +msgid "Base" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Telugu / తెలుగు" +msgstr "" + +#. module: base +#: model:res.country,name:base.lr +msgid "Liberia" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +#: view:ir.model:0 +#: view:res.groups:0 +#: view:res.partner:0 +#: field:res.partner,comment:0 +#: model:res.widget,title:base.note_widget +msgid "Notes" +msgstr "" + +#. module: base +#: field:ir.config_parameter,value:0 +#: field:ir.property,value_binary:0 +#: field:ir.property,value_datetime:0 +#: field:ir.property,value_float:0 +#: field:ir.property,value_integer:0 +#: field:ir.property,value_reference:0 +#: field:ir.property,value_text:0 +#: selection:ir.server.object.lines,type:0 +#: field:ir.server.object.lines,value:0 +#: view:ir.values:0 +#: field:ir.values,value:0 +#: field:ir.values,value_unpickle:0 +msgid "Value" +msgstr "" + +#. module: base +#: field:ir.sequence,code:0 +#: field:ir.sequence.type,code:0 +#: selection:ir.translation,type:0 +#: field:res.bank,code:0 +#: field:res.partner.bank.type,code:0 +msgid "Code" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_config_installer +msgid "res.config.installer" +msgstr "" + +#. module: base +#: model:res.country,name:base.mc +msgid "Monaco" +msgstr "" + +#. module: base +#: selection:ir.cron,interval_type:0 +msgid "Minutes" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "Help" +msgstr "" + +#. module: base +#: help:res.config.users,menu_id:0 +#: help:res.users,menu_id:0 +msgid "" +"If specified, the action will replace the standard menu for this user." +msgstr "" + +#. module: base +#: selection:ir.actions.server,state:0 +msgid "Write Object" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_fundrising +msgid "Fund Raising" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_sequence_type +#: model:ir.ui.menu,name:base.menu_ir_sequence_type +msgid "Sequence Codes" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (CO) / Español (CO)" +msgstr "" + +#. module: base +#: view:base.module.configuration:0 +msgid "" +"All pending configuration wizards have been executed. You may restart " +"individual wizards via the list of configuration wizards." +msgstr "" + +#. module: base +#: wizard_button:server.action.create,step_1,create:0 +msgid "Create" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Current Year with Century: %(year)s" +msgstr "" + +#. module: base +#: field:ir.exports,export_fields:0 +msgid "Export ID" +msgstr "" + +#. module: base +#: model:res.country,name:base.fr +msgid "France" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_log +msgid "res.log" +msgstr "" + +#. module: base +#: help:ir.translation,module:0 +#: help:ir.translation,xml_id:0 +msgid "Maps to the ir_model_data for which this translation is provided." +msgstr "" + +#. module: base +#: view:workflow.activity:0 +#: field:workflow.activity,flow_stop:0 +msgid "Flow Stop" +msgstr "" + +#. module: base +#: selection:ir.cron,interval_type:0 +msgid "Weeks" +msgstr "" + +#. module: base +#: model:res.country,name:base.af +msgid "Afghanistan, Islamic State of" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_module_import.py:67 +#, python-format +msgid "Error !" +msgstr "" + +#. module: base +#: model:res.partner.bank.type.field,name:base.bank_normal_field_contry +msgid "country_id" +msgstr "" + +#. module: base +#: field:ir.cron,interval_type:0 +msgid "Interval Unit" +msgstr "" + +#. module: base +#: field:publisher_warranty.contract,kind:0 +#: field:workflow.activity,kind:0 +msgid "Kind" +msgstr "" + +#. module: base +#: code:addons/orm.py:3775 +#, python-format +msgid "This method does not exist anymore" +msgstr "" + +#. module: base +#: field:res.bank,fax:0 +#: field:res.partner.address,fax:0 +msgid "Fax" +msgstr "" + +#. module: base +#: field:res.lang,thousands_sep:0 +msgid "Thousands Separator" +msgstr "" + +#. module: base +#: field:res.request,create_date:0 +msgid "Created Date" +msgstr "" + +#. module: base +#: help:ir.actions.server,loop_action:0 +msgid "" +"Select the action that will be executed. Loop action will not be avaliable " +"inside loop." +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Chinese (TW) / 正體字" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_request +msgid "res.request" +msgstr "" + +#. module: base +#: view:ir.model:0 +msgid "In Memory" +msgstr "" + +#. module: base +#: view:ir.actions.todo:0 +msgid "Todo" +msgstr "" + +#. module: base +#: field:ir.attachment,datas:0 +msgid "File Content" +msgstr "" + +#. module: base +#: model:res.country,name:base.pa +msgid "Panama" +msgstr "" + +#. module: base +#: model:res.partner.title,name:base.res_partner_title_ltd +msgid "Ltd" +msgstr "" + +#. module: base +#: help:workflow.transition,group_id:0 +msgid "" +"The group that a user must have to be authorized to validate this transition." +msgstr "" + +#. module: base +#: constraint:res.config.users:0 +#: constraint:res.users:0 +msgid "The chosen company is not in the allowed companies for this user" +msgstr "" + +#. module: base +#: model:res.country,name:base.gi +msgid "Gibraltar" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,report_name:0 +msgid "Service Name" +msgstr "" + +#. module: base +#: model:res.country,name:base.pn +msgid "Pitcairn Island" +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +msgid "" +"We suggest to reload the menu tab to see the new menus (Ctrl+T then Ctrl+R)." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_rule +#: model:ir.ui.menu,name:base.menu_action_rule +msgid "Record Rules" +msgstr "" + +#. module: base +#: field:res.config.users,name:0 +#: field:res.users,name:0 +msgid "User Name" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Day of the year: %(doy)s" +msgstr "" + +#. module: base +#: view:ir.model:0 +#: view:ir.model.fields:0 +#: view:workflow.activity:0 +msgid "Properties" +msgstr "" + +#. module: base +#: help:ir.sequence,padding:0 +msgid "" +"OpenERP will automatically adds some '0' on the left of the 'Next Number' to " +"get the required padding size." +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%A - Full weekday name." +msgstr "" + +#. module: base +#: selection:ir.cron,interval_type:0 +msgid "Months" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,search_view:0 +msgid "Search View" +msgstr "" + +#. module: base +#: sql_constraint:res.lang:0 +msgid "The code of the language must be unique !" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_attachment +#: view:ir.actions.report.xml:0 +#: view:ir.attachment:0 +#: model:ir.ui.menu,name:base.menu_action_attachment +msgid "Attachments" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_base_partner +#: model:ir.ui.menu,name:base.menu_sale_config_sales +#: model:ir.ui.menu,name:base.menu_sales +msgid "Sales" +msgstr "" + +#. module: base +#: field:ir.actions.server,child_ids:0 +msgid "Other Actions" +msgstr "" + +#. module: base +#: selection:ir.actions.todo,state:0 +#: view:res.config.users:0 +msgid "Done" +msgstr "" + +#. module: base +#: model:res.partner.title,name:base.res_partner_title_miss +msgid "Miss" +msgstr "" + +#. module: base +#: view:ir.model.access:0 +#: field:ir.model.access,perm_write:0 +#: view:ir.rule:0 +msgid "Write Access" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%m - Month number [01,12]." +msgstr "" + +#. module: base +#: field:res.bank,city:0 +#: field:res.partner,city:0 +#: field:res.partner.address,city:0 +#: field:res.partner.bank,city:0 +msgid "City" +msgstr "" + +#. module: base +#: model:res.country,name:base.qa +msgid "Qatar" +msgstr "" + +#. module: base +#: model:res.country,name:base.it +msgid "Italy" +msgstr "" + +#. module: base +#: view:ir.actions.todo:0 +#: selection:ir.actions.todo,state:0 +msgid "To Do" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Estonian / Eesti keel" +msgstr "" + +#. module: base +#: field:res.config.users,email:0 +#: field:res.partner,email:0 +#: field:res.users,email:0 +msgid "E-mail" +msgstr "" + +#. module: base +#: selection:ir.module.module,license:0 +msgid "GPL-3 or later version" +msgstr "" + +#. module: base +#: field:workflow.activity,action:0 +msgid "Python Action" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "English (US)" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_model_data +#: view:ir.model.data:0 +#: model:ir.ui.menu,name:base.ir_model_data_menu +msgid "Object Identifiers" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_partner_title_partner +msgid "" +"Manage the partner titles you want to have available in your system. The " +"partner titles is the legal status of the company: Private Limited, SA, etc." +msgstr "" + +#. module: base +#: view:base.language.export:0 +msgid "To browse official translations, you can start with these links:" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:484 +#, python-format +msgid "" +"You can not read this document (%s) ! Be sure your user belongs to one of " +"these groups: %s." +msgstr "" + +#. module: base +#: view:res.bank:0 +#: field:res.config.users,address_id:0 +#: view:res.partner.address:0 +#: view:res.users:0 +#: field:res.users,address_id:0 +msgid "Address" +msgstr "" + +#. module: base +#: field:ir.module.module,latest_version:0 +msgid "Installed version" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Mongolian / монгол" +msgstr "" + +#. module: base +#: model:res.country,name:base.mr +msgid "Mauritania" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_translation +msgid "ir.translation" +msgstr "" + +#. module: base +#: view:base.module.update:0 +msgid "Module update result" +msgstr "" + +#. module: base +#: view:workflow.activity:0 +#: field:workflow.workitem,act_id:0 +msgid "Activity" +msgstr "" + +#. module: base +#: view:res.partner:0 +#: view:res.partner.address:0 +msgid "Postal Address" +msgstr "" + +#. module: base +#: field:res.company,parent_id:0 +msgid "Parent Company" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (CR) / Español (CR)" +msgstr "" + +#. module: base +#: field:res.currency.rate,rate:0 +msgid "Rate" +msgstr "" + +#. module: base +#: model:res.country,name:base.cg +msgid "Congo" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "Examples" +msgstr "" + +#. module: base +#: field:ir.default,value:0 +msgid "Default Value" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_tools +msgid "Tools" +msgstr "" + +#. module: base +#: model:res.country,name:base.kn +msgid "Saint Kitts & Nevis Anguilla" +msgstr "" + +#. module: base +#: code:addons/base/res/res_currency.py:100 +#, python-format +msgid "" +"No rate found \n" +"for the currency: %s \n" +"at the date: %s" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_ui_view_custom +msgid "" +"Customized views are used when users reorganize the content of their " +"dashboard views (via web client)" +msgstr "" + +#. module: base +#: field:ir.model,name:0 +#: field:ir.model.fields,model:0 +#: field:ir.values,model:0 +msgid "Object Name" +msgstr "" + +#. module: base +#: help:ir.actions.server,srcmodel_id:0 +msgid "" +"Object in which you want to create / write the object. If it is empty then " +"refer to the Object field." +msgstr "" + +#. module: base +#: view:ir.module.module:0 +#: selection:ir.module.module,state:0 +#: selection:ir.module.module.dependency,state:0 +msgid "Not Installed" +msgstr "" + +#. module: base +#: view:workflow.activity:0 +#: field:workflow.activity,out_transitions:0 +msgid "Outgoing Transitions" +msgstr "" + +#. module: base +#: field:ir.ui.menu,icon:0 +msgid "Icon" +msgstr "" + +#. module: base +#: help:ir.model.fields,model_id:0 +msgid "The model this field belongs to" +msgstr "" + +#. module: base +#: model:res.country,name:base.mq +msgid "Martinique (French)" +msgstr "" + +#. module: base +#: view:ir.sequence.type:0 +msgid "Sequences Type" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.res_request-act +#: model:ir.ui.menu,name:base.menu_res_request_act +#: model:ir.ui.menu,name:base.menu_resquest_ref +#: view:res.request:0 +msgid "Requests" +msgstr "" + +#. module: base +#: model:res.country,name:base.ye +msgid "Yemen" +msgstr "" + +#. module: base +#: selection:workflow.activity,split_mode:0 +msgid "Or" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.res_log_act_window +#: model:ir.ui.menu,name:base.menu_res_log_act_window +msgid "Client Logs" +msgstr "" + +#. module: base +#: model:res.country,name:base.al +msgid "Albania" +msgstr "" + +#. module: base +#: model:res.country,name:base.ws +msgid "Samoa" +msgstr "" + +#. module: base +#: code:addons/base/res/res_lang.py:161 +#, python-format +msgid "" +"You cannot delete the language which is Active !\n" +"Please de-activate the language first." +msgstr "" + +#. module: base +#: view:base.language.install:0 +#: view:base.module.import:0 +msgid "" +"Please be patient, this operation may take a few minutes (depending on the " +"number of modules currently installed)..." +msgstr "" + +#. module: base +#: field:ir.ui.menu,child_id:0 +msgid "Child IDs" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_actions.py:713 +#: code:addons/base/ir/ir_actions.py:716 +#, python-format +msgid "Problem in configuration `Record Id` in Server Action!" +msgstr "" + +#. module: base +#: code:addons/orm.py:2306 +#: code:addons/orm.py:2316 +#, python-format +msgid "ValidateError" +msgstr "" + +#. module: base +#: view:base.module.import:0 +#: view:base.module.update:0 +msgid "Open Modules" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_res_bank_form +msgid "Manage bank records you want to be used in the system." +msgstr "" + +#. module: base +#: view:base.module.import:0 +msgid "Import module" +msgstr "" + +#. module: base +#: field:ir.actions.server,loop_action:0 +msgid "Loop Action" +msgstr "" + +#. module: base +#: help:ir.actions.report.xml,report_file:0 +msgid "" +"The path to the main report file (depending on Report Type) or NULL if the " +"content is in another field" +msgstr "" + +#. module: base +#: model:res.country,name:base.la +msgid "Laos" +msgstr "" + +#. module: base +#: selection:ir.actions.server,state:0 +#: field:res.config.users,user_email:0 +#: field:res.users,user_email:0 +msgid "Email" +msgstr "" + +#. module: base +#: field:res.config.users,action_id:0 +#: field:res.users,action_id:0 +msgid "Home Action" +msgstr "" + +#. module: base +#: code:addons/custom.py:558 +#, python-format +msgid "" +"The sum of the data (2nd field) is null.\n" +"We can't draw a pie chart !" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_lunch_reporting +#: model:ir.ui.menu,name:base.menu_project_report +#: model:ir.ui.menu,name:base.menu_report_association +#: model:ir.ui.menu,name:base.menu_report_marketing +#: model:ir.ui.menu,name:base.menu_reporting +#: model:ir.ui.menu,name:base.next_id_64 +#: model:ir.ui.menu,name:base.next_id_73 +#: model:ir.ui.menu,name:base.reporting_menu +msgid "Reporting" +msgstr "" + +#. module: base +#: model:res.country,name:base.tg +msgid "Togo" +msgstr "" + +#. module: base +#: selection:ir.module.module,license:0 +msgid "Other Proprietary" +msgstr "" + +#. module: base +#: selection:workflow.activity,kind:0 +msgid "Stop All" +msgstr "" + +#. module: base +#: code:addons/orm.py:412 +#, python-format +msgid "The read_group method is not implemented on this object !" +msgstr "" + +#. module: base +#: view:ir.model.data:0 +msgid "Updatable" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "3. %x ,%X ==> 12/05/08, 18:25:20" +msgstr "" + +#. module: base +#: selection:ir.model.fields,on_delete:0 +msgid "Cascade" +msgstr "" + +#. module: base +#: field:workflow.transition,group_id:0 +msgid "Group Required" +msgstr "" + +#. module: base +#: view:ir.actions.configuration.wizard:0 +msgid "Next Configuration Step" +msgstr "" + +#. module: base +#: field:res.groups,comment:0 +msgid "Comment" +msgstr "" + +#. module: base +#: model:res.country,name:base.ro +msgid "Romania" +msgstr "" + +#. module: base +#: help:ir.cron,doall:0 +msgid "" +"Enable this if you want to execute missed occurences as soon as the server " +"restarts." +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +msgid "Start update" +msgstr "" + +#. module: base +#: code:addons/base/publisher_warranty/publisher_warranty.py:144 +#, python-format +msgid "Contract validation error" +msgstr "" + +#. module: base +#: field:res.country.state,name:0 +msgid "State Name" +msgstr "" + +#. module: base +#: field:workflow.activity,join_mode:0 +msgid "Join Mode" +msgstr "" + +#. module: base +#: field:res.config.users,context_tz:0 +#: field:res.users,context_tz:0 +msgid "Timezone" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_report_xml +#: selection:ir.ui.menu,action:0 +msgid "ir.actions.report.xml" +msgstr "" + +#. module: base +#: model:res.partner.title,shortcut:base.res_partner_title_miss +msgid "Mss" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_ui_view +msgid "ir.ui.view" +msgstr "" + +#. module: base +#: constraint:res.partner:0 +msgid "Error ! You can not create recursive associated members." +msgstr "" + +#. module: base +#: help:res.lang,code:0 +msgid "This field is used to set/get locales for user" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_2 +msgid "OpenERP Partners" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_hr_manager +msgid "HR Manager Dashboard" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:253 +#, python-format +msgid "" +"Unable to install module \"%s\" because an external dependency is not met: %s" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Search modules" +msgstr "" + +#. module: base +#: model:res.country,name:base.by +msgid "Belarus" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,name:0 +#: field:ir.actions.act_window_close,name:0 +#: field:ir.actions.actions,name:0 +#: field:ir.actions.server,name:0 +#: field:ir.actions.url,name:0 +#: field:ir.filters,name:0 +msgid "Action Name" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_res_users +msgid "" +"Create and manage users that will connect to the system. Users can be " +"deactivated should there be a period of time during which they will/should " +"not connect to the system. You can assign them groups in order to give them " +"specific access to the applications they need to use in the system." +msgstr "" + +#. module: base +#: selection:res.request,priority:0 +msgid "Normal" +msgstr "" + +#. module: base +#: field:res.bank,street2:0 +#: field:res.partner.address,street2:0 +msgid "Street2" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_view_base_module_update +msgid "Module Update" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_module_upgrade.py:95 +#, python-format +msgid "Following modules are not installed or unknown: %s" +msgstr "" + +#. module: base +#: view:ir.cron:0 +#: field:ir.cron,user_id:0 +#: view:ir.filters:0 +#: field:ir.filters,user_id:0 +#: field:ir.ui.view.custom,user_id:0 +#: field:ir.values,user_id:0 +#: field:res.log,user_id:0 +#: field:res.partner.event,user_id:0 +#: view:res.users:0 +#: field:res.widget.user,user_id:0 +msgid "User" +msgstr "" + +#. module: base +#: model:res.country,name:base.pr +msgid "Puerto Rico" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +msgid "Open Window" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,auto_search:0 +msgid "Auto Search" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,filter:0 +msgid "Filter" +msgstr "" + +#. module: base +#: model:res.partner.title,shortcut:base.res_partner_title_madam +msgid "Ms." +msgstr "" + +#. module: base +#: model:res.country,name:base.ch +msgid "Switzerland" +msgstr "" + +#. module: base +#: model:res.country,name:base.gd +msgid "Grenada" +msgstr "" + +#. module: base +#: model:res.country,name:base.wf +msgid "Wallis and Futuna Islands" +msgstr "" + +#. module: base +#: selection:server.action.create,init,type:0 +msgid "Open Report" +msgstr "" + +#. module: base +#: field:res.currency,rounding:0 +msgid "Rounding factor" +msgstr "" + +#. module: base +#: view:base.language.install:0 +msgid "Load" +msgstr "" + +#. module: base +#: help:res.config.users,name:0 +#: help:res.users,name:0 +msgid "The new user's real name, used for searching and most listings" +msgstr "" + +#. module: base +#: code:addons/osv.py:154 +#: code:addons/osv.py:156 +#, python-format +msgid "Integrity Error" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_wizard_screen +msgid "ir.wizard.screen" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:223 +#, python-format +msgid "Size of the field can never be less than 1 !" +msgstr "" + +#. module: base +#: model:res.country,name:base.so +msgid "Somalia" +msgstr "" + +#. module: base +#: selection:publisher_warranty.contract,state:0 +msgid "Terminated" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_13 +msgid "Important customers" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "Update Terms" +msgstr "" + +#. module: base +#: field:partner.sms.send,mobile_to:0 +#: field:res.request,act_to:0 +#: field:res.request.history,act_to:0 +msgid "To" +msgstr "" + +#. module: base +#: view:ir.cron:0 +#: field:ir.cron,args:0 +msgid "Arguments" +msgstr "" + +#. module: base +#: code:addons/orm.py:716 +#, python-format +msgid "Database ID doesn't exist: %s : %s" +msgstr "" + +#. module: base +#: selection:ir.module.module,license:0 +msgid "GPL Version 2" +msgstr "" + +#. module: base +#: selection:ir.module.module,license:0 +msgid "GPL Version 3" +msgstr "" + +#. module: base +#: code:addons/orm.py:836 +#, python-format +msgid "key '%s' not found in selection field '%s'" +msgstr "" + +#. module: base +#: view:partner.wizard.ean.check:0 +msgid "Correct EAN13" +msgstr "" + +#. module: base +#: code:addons/orm.py:2317 +#, python-format +msgid "The value \"%s\" for the field \"%s\" is not in the selection" +msgstr "" + +#. module: base +#: field:res.partner,customer:0 +#: view:res.partner.address:0 +#: field:res.partner.address,is_customer_add:0 +#: model:res.partner.category,name:base.res_partner_category_0 +msgid "Customer" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (NI) / Español (NI)" +msgstr "" + +#. module: base +#: field:ir.module.module,shortdesc:0 +msgid "Short Description" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,context:0 +#: field:ir.filters,context:0 +msgid "Context Value" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Hour 00->24: %(h24)s" +msgstr "" + +#. module: base +#: field:ir.cron,nextcall:0 +msgid "Next Execution Date" +msgstr "" + +#. module: base +#: help:multi_company.default,field_id:0 +msgid "Select field property" +msgstr "" + +#. module: base +#: field:res.request.history,date_sent:0 +msgid "Date sent" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Month: %(month)s" +msgstr "" + +#. module: base +#: field:ir.actions.act_window.view,sequence:0 +#: field:ir.actions.server,sequence:0 +#: field:ir.actions.todo,sequence:0 +#: view:ir.cron:0 +#: view:ir.sequence:0 +#: field:ir.ui.menu,sequence:0 +#: view:ir.ui.view:0 +#: field:ir.ui.view,priority:0 +#: field:ir.ui.view_sc,sequence:0 +#: field:multi_company.default,sequence:0 +#: field:res.partner.bank,sequence:0 +#: field:res.widget.user,sequence:0 +#: field:wizard.ir.model.menu.create.line,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: base +#: model:res.country,name:base.tn +msgid "Tunisia" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_mrp_root +msgid "Manufacturing" +msgstr "" + +#. module: base +#: model:res.country,name:base.km +msgid "Comoros" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_server_action +#: view:ir.actions.server:0 +#: model:ir.ui.menu,name:base.menu_server_action +msgid "Server Actions" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Cancel Install" +msgstr "" + +#. module: base +#: field:ir.model.fields,selection:0 +msgid "Selection Options" +msgstr "" + +#. module: base +#: field:res.partner.category,parent_right:0 +msgid "Right parent" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "Legends for Date and Time Formats" +msgstr "" + +#. module: base +#: selection:ir.actions.server,state:0 +msgid "Copy Object" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:581 +#, python-format +msgid "" +"Group(s) cannot be deleted, because some user(s) still belong to them: %s !" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_country_state +#: model:ir.ui.menu,name:base.menu_country_state_partner +msgid "Fed. States" +msgstr "" + +#. module: base +#: view:ir.model:0 +#: view:res.groups:0 +msgid "Access Rules" +msgstr "" + +#. module: base +#: field:ir.default,ref_table:0 +msgid "Table Ref." +msgstr "" + +#. module: base +#: field:ir.actions.act_window,res_model:0 +#: field:ir.actions.report.xml,model:0 +#: field:ir.actions.server,model_id:0 +#: field:ir.actions.wizard,model:0 +#: field:ir.cron,model:0 +#: field:ir.default,field_tbl:0 +#: field:ir.filters,model_id:0 +#: field:ir.model,model:0 +#: view:ir.model.access:0 +#: field:ir.model.access,model_id:0 +#: view:ir.model.data:0 +#: field:ir.model.data,model:0 +#: view:ir.model.fields:0 +#: view:ir.rule:0 +#: field:ir.rule,model_id:0 +#: selection:ir.translation,type:0 +#: view:ir.ui.view:0 +#: field:ir.ui.view,model:0 +#: view:ir.values:0 +#: field:ir.values,model_id:0 +#: field:multi_company.default,object_id:0 +#: field:res.log,res_model:0 +#: field:res.request.link,object:0 +#: field:workflow.triggers,model:0 +msgid "Object" +msgstr "" + +#. module: base +#: code:addons/osv.py:151 +#, python-format +msgid "" +"\n" +"\n" +"[object with reference: %s - %s]" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_default +msgid "ir.default" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Minute: %(min)s" +msgstr "" + +#. module: base +#: view:base.update.translations:0 +#: model:ir.actions.act_window,name:base.action_wizard_update_translations +#: model:ir.ui.menu,name:base.menu_wizard_update_translations +msgid "Synchronize Translations" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.next_id_10 +msgid "Scheduler" +msgstr "" + +#. module: base +#: help:ir.cron,numbercall:0 +msgid "" +"Number of time the function is called,\n" +"a negative number indicates no limit" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:331 +#, python-format +msgid "" +"Changing the type of a column is not yet supported. Please drop it and " +"create it again!" +msgstr "" + +#. module: base +#: field:ir.ui.view_sc,user_id:0 +msgid "User Ref." +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:580 +#, python-format +msgid "Warning !" +msgstr "" + +#. module: base +#: model:res.widget,title:base.google_maps_widget +msgid "Google Maps" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_base_config +#: model:ir.ui.menu,name:base.menu_config +#: model:ir.ui.menu,name:base.menu_event_config +#: model:ir.ui.menu,name:base.menu_lunch_survey_root +#: model:ir.ui.menu,name:base.menu_marketing_config_association +#: model:ir.ui.menu,name:base.menu_marketing_config_root +#: view:res.company:0 +msgid "Configuration" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_publisher_warranty_contract_wizard +msgid "publisher_warranty.contract.wizard" +msgstr "" + +#. module: base +#: field:ir.actions.server,expression:0 +msgid "Loop Expression" +msgstr "" + +#. module: base +#: field:publisher_warranty.contract,date_start:0 +msgid "Starting Date" +msgstr "" + +#. module: base +#: help:res.partner,website:0 +msgid "Website of Partner" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_5 +msgid "Gold Partner" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_partner +#: field:res.company,partner_id:0 +#: view:res.partner.address:0 +#: field:res.partner.bank,partner_id:0 +#: field:res.partner.event,partner_id:0 +#: selection:res.partner.title,domain:0 +#: model:res.request.link,name:base.req_link_partner +msgid "Partner" +msgstr "" + +#. module: base +#: model:res.country,name:base.tr +msgid "Turkey" +msgstr "" + +#. module: base +#: model:res.country,name:base.fk +msgid "Falkland Islands" +msgstr "" + +#. module: base +#: model:res.country,name:base.lb +msgid "Lebanon" +msgstr "" + +#. module: base +#: view:ir.actions.report.xml:0 +#: field:ir.actions.report.xml,report_type:0 +msgid "Report Type" +msgstr "" + +#. module: base +#: field:ir.actions.todo,state:0 +#: view:ir.module.module:0 +#: field:ir.module.module,state:0 +#: field:ir.module.module.dependency,state:0 +#: field:publisher_warranty.contract,state:0 +#: field:res.bank,state:0 +#: view:res.country.state:0 +#: field:res.partner.bank,state_id:0 +#: view:res.request:0 +#: field:res.request,state:0 +#: field:workflow.instance,state:0 +#: field:workflow.workitem,state:0 +msgid "State" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Galician / Galego" +msgstr "" + +#. module: base +#: model:res.country,name:base.no +msgid "Norway" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "4. %b, %B ==> Dec, December" +msgstr "" + +#. module: base +#: view:base.language.install:0 +#: model:ir.ui.menu,name:base.menu_view_base_language_install +msgid "Load an Official Translation" +msgstr "" + +#. module: base +#: view:res.currency:0 +msgid "Miscelleanous" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_10 +msgid "Open Source Service Company" +msgstr "" + +#. module: base +#: model:res.country,name:base.kg +msgid "Kyrgyz Republic (Kyrgyzstan)" +msgstr "" + +#. module: base +#: selection:res.request,state:0 +msgid "waiting" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,report_file:0 +msgid "Report file" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_workflow_triggers +msgid "workflow.triggers" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:62 +#, python-format +msgid "Invalid search criterions" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +msgid "Created" +msgstr "" + +#. module: base +#: help:ir.actions.wizard,multi:0 +msgid "" +"If set to true, the wizard will not be displayed on the right toolbar of a " +"form view." +msgstr "" + +#. module: base +#: view:base.language.import:0 +msgid "- type,name,res_id,src,value" +msgstr "" + +#. module: base +#: model:res.country,name:base.hm +msgid "Heard and McDonald Islands" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,view_id:0 +msgid "View Ref." +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "Selection" +msgstr "" + +#. module: base +#: field:res.company,rml_header1:0 +msgid "Report Header" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,type:0 +#: field:ir.actions.act_window_close,type:0 +#: field:ir.actions.actions,type:0 +#: field:ir.actions.report.xml,type:0 +#: view:ir.actions.server:0 +#: field:ir.actions.server,state:0 +#: field:ir.actions.server,type:0 +#: field:ir.actions.url,type:0 +#: field:ir.actions.wizard,type:0 +msgid "Action Type" +msgstr "" + +#. module: base +#: code:addons/base/module/module.py:268 +#, python-format +msgid "" +"You try to install module '%s' that depends on module '%s'.\n" +"But the latter module is not available in your system." +msgstr "" + +#. module: base +#: view:base.language.import:0 +#: model:ir.actions.act_window,name:base.action_view_base_import_language +#: model:ir.ui.menu,name:base.menu_view_base_import_language +msgid "Import Translation" +msgstr "" + +#. module: base +#: field:res.partner.bank.type,field_ids:0 +msgid "Type fields" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +#: field:ir.module.module,category_id:0 +msgid "Category" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +#: selection:ir.attachment,type:0 +#: selection:ir.property,type:0 +msgid "Binary" +msgstr "" + +#. module: base +#: field:ir.actions.server,sms:0 +#: selection:ir.actions.server,state:0 +msgid "SMS" +msgstr "" + +#. module: base +#: model:res.country,name:base.cr +msgid "Costa Rica" +msgstr "" + +#. module: base +#: view:workflow.activity:0 +msgid "Conditions" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_other_form +msgid "Other Partners" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_currency_form +#: model:ir.ui.menu,name:base.menu_action_currency_form +#: view:res.currency:0 +msgid "Currencies" +msgstr "" + +#. module: base +#: sql_constraint:res.groups:0 +msgid "The name of the group must be unique !" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Hour 00->12: %(h12)s" +msgstr "" + +#. module: base +#: help:res.partner.address,active:0 +msgid "Uncheck the active field to hide the contact." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_widget_wizard +msgid "Add a widget for User" +msgstr "" + +#. module: base +#: model:res.country,name:base.dk +msgid "Denmark" +msgstr "" + +#. module: base +#: field:res.country,code:0 +msgid "Country Code" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_workflow_instance +msgid "workflow.instance" +msgstr "" + +#. module: base +#: code:addons/orm.py:278 +#, python-format +msgid "Unknown attribute %s in %s " +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "10. %S ==> 20" +msgstr "" + +#. module: base +#: code:addons/fields.py:106 +#, python-format +msgid "undefined get method !" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Norwegian Bokmål / Norsk bokmål" +msgstr "" + +#. module: base +#: help:res.config.users,new_password:0 +#: help:res.users,new_password:0 +msgid "" +"Only specify a value if you want to change the user password. This user will " +"have to logout and login again!" +msgstr "" + +#. module: base +#: model:res.partner.title,name:base.res_partner_title_madam +msgid "Madam" +msgstr "" + +#. module: base +#: model:res.country,name:base.ee +msgid "Estonia" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.dashboard +msgid "Dashboards" +msgstr "" + +#. module: base +#: help:ir.attachment,type:0 +msgid "Binary File or external URL" +msgstr "" + +#. module: base +#: field:res.config.users,new_password:0 +#: field:res.users,new_password:0 +msgid "Change password" +msgstr "" + +#. module: base +#: model:res.country,name:base.nl +msgid "Netherlands" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.next_id_4 +msgid "Low Level Objects" +msgstr "" + +#. module: base +#: view:res.company:0 +msgid "Your Logo - Use a size of about 450x150 pixels." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_values +msgid "ir.values" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Occitan (FR, post 1500) / Occitan" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.open_module_tree +msgid "" +"You can install new modules in order to activate new features, menu, reports " +"or data in your OpenERP instance. To install some modules, click on the " +"button \"Schedule for Installation\" from the form view, then click on " +"\"Apply Scheduled Upgrades\" to migrate your system." +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_emails +#: model:ir.ui.menu,name:base.menu_mail_gateway +msgid "Emails" +msgstr "" + +#. module: base +#: model:res.country,name:base.cd +msgid "Congo, The Democratic Republic of the" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Malayalam / മലയാളം" +msgstr "" + +#. module: base +#: view:res.request:0 +#: field:res.request,body:0 +#: field:res.request.history,req_id:0 +msgid "Request" +msgstr "" + +#. module: base +#: model:res.country,name:base.jp +msgid "Japan" +msgstr "" + +#. module: base +#: field:ir.cron,numbercall:0 +msgid "Number of Calls" +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +#: field:base.module.upgrade,module_info:0 +msgid "Modules to update" +msgstr "" + +#. module: base +#: help:ir.actions.server,sequence:0 +msgid "" +"Important when you deal with multiple actions, the execution order will be " +"decided based on this, low number is higher priority." +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,header:0 +msgid "Add RML header" +msgstr "" + +#. module: base +#: model:res.country,name:base.gr +msgid "Greece" +msgstr "" + +#. module: base +#: field:res.request,trigger_date:0 +msgid "Trigger Date" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Croatian / hrvatski jezik" +msgstr "" + +#. module: base +#: field:base.language.install,overwrite:0 +msgid "Overwrite Existing Terms" +msgstr "" + +#. module: base +#: help:ir.actions.server,code:0 +msgid "Python code to be executed" +msgstr "" + +#. module: base +#: sql_constraint:res.country:0 +msgid "The code of the country must be unique !" +msgstr "" + +#. module: base +#: selection:ir.module.module.dependency,state:0 +msgid "Uninstallable" +msgstr "" + +#. module: base +#: view:res.partner.category:0 +msgid "Partner Category" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +#: selection:ir.actions.server,state:0 +msgid "Trigger" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_base_module_update +msgid "Update Module" +msgstr "" + +#. module: base +#: view:ir.model.fields:0 +#: field:ir.model.fields,translate:0 +msgid "Translate" +msgstr "" + +#. module: base +#: field:res.request.history,body:0 +msgid "Body" +msgstr "" + +#. module: base +#: view:partner.wizard.spam:0 +msgid "Send Email" +msgstr "" + +#. module: base +#: field:res.config.users,menu_id:0 +#: field:res.users,menu_id:0 +msgid "Menu Action" +msgstr "" + +#. module: base +#: help:ir.model.fields,selection:0 +msgid "" +"List of options for a selection field, specified as a Python expression " +"defining a list of (key, label) pairs. For example: " +"[('blue','Blue'),('yellow','Yellow')]" +msgstr "" + +#. module: base +#: selection:base.language.export,state:0 +msgid "choose" +msgstr "" + +#. module: base +#: help:ir.model,osv_memory:0 +msgid "" +"Indicates whether this object model lives in memory only, i.e. is not " +"persisted (osv.osv_memory)" +msgstr "" + +#. module: base +#: field:res.partner,child_ids:0 +#: field:res.request,ref_partner_id:0 +msgid "Partner Ref." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_supplier_form +#: model:ir.ui.menu,name:base.menu_procurement_management_supplier_name +#: view:res.partner:0 +msgid "Suppliers" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract.wizard:0 +msgid "Register" +msgstr "" + +#. module: base +#: field:res.request,ref_doc2:0 +msgid "Document Ref 2" +msgstr "" + +#. module: base +#: field:res.request,ref_doc1:0 +msgid "Document Ref 1" +msgstr "" + +#. module: base +#: model:res.country,name:base.ga +msgid "Gabon" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_model_data +msgid "ir.model.data" +msgstr "" + +#. module: base +#: view:ir.model:0 +#: view:ir.rule:0 +#: view:res.groups:0 +msgid "Access Rights" +msgstr "" + +#. module: base +#: model:res.country,name:base.gl +msgid "Greenland" +msgstr "" + +#. module: base +#: field:res.partner.bank,acc_number:0 +msgid "Account Number" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "1. %c ==> Fri Dec 5 18:25:20 2008" +msgstr "" + +#. module: base +#: model:res.country,name:base.nc +msgid "New Caledonia (French)" +msgstr "" + +#. module: base +#: model:res.country,name:base.cy +msgid "Cyprus" +msgstr "" + +#. module: base +#: view:base.module.import:0 +msgid "" +"This wizard helps you add a new language to you OpenERP system. After " +"loading a new language it becomes available as default interface language " +"for users and partners." +msgstr "" + +#. module: base +#: field:ir.actions.server,subject:0 +#: field:partner.wizard.spam,subject:0 +#: field:res.request,name:0 +msgid "Subject" +msgstr "" + +#. module: base +#: field:res.request,act_from:0 +#: field:res.request.history,act_from:0 +msgid "From" +msgstr "" + +#. module: base +#: view:res.users:0 +msgid "Preferences" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_consumers0 +msgid "Consumers" +msgstr "" + +#. module: base +#: view:res.config:0 +#: wizard_button:server.action.create,init,step_1:0 +msgid "Next" +msgstr "" + +#. module: base +#: help:ir.cron,function:0 +msgid "" +"Name of the method to be called on the object when this scheduler is " +"executed." +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:219 +#, python-format +msgid "" +"The Selection Options expression is must be in the [('key','Label'), ...] " +"format!" +msgstr "" + +#. module: base +#: view:ir.actions.report.xml:0 +msgid "Miscellaneous" +msgstr "" + +#. module: base +#: model:res.country,name:base.cn +msgid "China" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:516 +#, python-format +msgid "" +"--\n" +"%(name)s %(email)s\n" +msgstr "" + +#. module: base +#: model:res.country,name:base.eh +msgid "Western Sahara" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_workflow +msgid "workflow" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_res_company_form +msgid "" +"Create and manage the companies that will be managed by OpenERP from here. " +"Shops or subsidiaries can be created and maintained from here." +msgstr "" + +#. module: base +#: model:res.country,name:base.id +msgid "Indonesia" +msgstr "" + +#. module: base +#: view:base.update.translations:0 +msgid "" +"This wizard will detect new terms to translate in the application, so that " +"you can then add translations manually or perform a complete export (as a " +"template for a new language example)." +msgstr "" + +#. module: base +#: help:multi_company.default,expression:0 +msgid "" +"Expression, must be True to match\n" +"use context.get or user (browse)" +msgstr "" + +#. module: base +#: model:res.country,name:base.bg +msgid "Bulgaria" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract.wizard:0 +msgid "Publisher warranty contract successfully registered!" +msgstr "" + +#. module: base +#: model:res.country,name:base.ao +msgid "Angola" +msgstr "" + +#. module: base +#: model:res.country,name:base.tf +msgid "French Southern Territories" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_currency +#: field:res.company,currency_id:0 +#: field:res.company,currency_ids:0 +#: view:res.currency:0 +#: field:res.currency,name:0 +#: field:res.currency.rate,currency_id:0 +msgid "Currency" +msgstr "" + +#. module: base +#: field:res.partner.canal,name:0 +msgid "Channel Name" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "5. %y, %Y ==> 08, 2008" +msgstr "" + +#. module: base +#: model:res.partner.title,shortcut:base.res_partner_title_ltd +msgid "ltd" +msgstr "" + +#. module: base +#: field:ir.values,res_id:0 +#: field:res.log,res_id:0 +msgid "Object ID" +msgstr "" + +#. module: base +#: view:res.company:0 +msgid "Landscape" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_administration +msgid "Administration" +msgstr "" + +#. module: base +#: view:base.module.update:0 +msgid "Click on Update below to start the process..." +msgstr "" + +#. module: base +#: model:res.country,name:base.ir +msgid "Iran" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.res_widget_user_act_window +#: model:ir.ui.menu,name:base.menu_res_widget_user_act_window +msgid "Widgets per User" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Slovak / Slovenský jazyk" +msgstr "" + +#. module: base +#: field:base.language.export,state:0 +#: field:ir.ui.menu,icon_pict:0 +#: field:publisher_warranty.contract.wizard,state:0 +msgid "unknown" +msgstr "" + +#. module: base +#: field:res.currency,symbol:0 +msgid "Symbol" +msgstr "" + +#. module: base +#: help:res.config.users,login:0 +#: help:res.users,login:0 +msgid "Used to log into the system" +msgstr "" + +#. module: base +#: view:base.update.translations:0 +msgid "Synchronize Translation" +msgstr "" + +#. module: base +#: field:ir.ui.view_sc,res_id:0 +msgid "Resource Ref." +msgstr "" + +#. module: base +#: model:res.country,name:base.ki +msgid "Kiribati" +msgstr "" + +#. module: base +#: model:res.country,name:base.iq +msgid "Iraq" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_association +msgid "Association" +msgstr "" + +#. module: base +#: model:res.country,name:base.cl +msgid "Chile" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_address_book +#: model:ir.ui.menu,name:base.menu_config_address_book +#: model:ir.ui.menu,name:base.menu_procurement_management_supplier +msgid "Address Book" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_sequence_type +msgid "ir.sequence.type" +msgstr "" + +#. module: base +#: selection:base.language.export,format:0 +msgid "CSV File" +msgstr "" + +#. module: base +#: field:res.company,account_no:0 +msgid "Account No." +msgstr "" + +#. module: base +#: code:addons/base/res/res_lang.py:157 +#, python-format +msgid "Base Language 'en_US' can not be deleted !" +msgstr "" + +#. module: base +#: selection:ir.model,state:0 +msgid "Base Object" +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "Dependencies :" +msgstr "" + +#. module: base +#: field:ir.model.fields,field_description:0 +msgid "Field Label" +msgstr "" + +#. module: base +#: model:res.country,name:base.dj +msgid "Djibouti" +msgstr "" + +#. module: base +#: field:ir.translation,value:0 +msgid "Translation Value" +msgstr "" + +#. module: base +#: model:res.country,name:base.ag +msgid "Antigua and Barbuda" +msgstr "" + +#. module: base +#: code:addons/orm.py:3166 +#, python-format +msgid "" +"Operation prohibited by access rules, or performed on an already deleted " +"document (Operation: %s, Document type: %s)." +msgstr "" + +#. module: base +#: model:res.country,name:base.zr +msgid "Zaire" +msgstr "" + +#. module: base +#: field:ir.model.data,res_id:0 +#: field:ir.translation,res_id:0 +#: field:workflow.instance,res_id:0 +#: field:workflow.triggers,res_id:0 +msgid "Resource ID" +msgstr "" + +#. module: base +#: view:ir.cron:0 +#: field:ir.model,info:0 +msgid "Information" +msgstr "" + +#. module: base +#: view:res.widget.user:0 +msgid "User Widgets" +msgstr "" + +#. module: base +#: view:base.module.update:0 +msgid "Update Module List" +msgstr "" + +#. module: base +#: selection:res.partner.address,type:0 +msgid "Other" +msgstr "" + +#. module: base +#: view:res.request:0 +msgid "Reply" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Turkish / Türkçe" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_workflow_activity_form +#: model:ir.ui.menu,name:base.menu_workflow_activity +#: view:workflow:0 +#: field:workflow,activities:0 +msgid "Activities" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,auto_refresh:0 +msgid "Auto-Refresh" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:62 +#, python-format +msgid "The osv_memory field can only be compared with = and != operator." +msgstr "" + +#. module: base +#: selection:ir.ui.view,type:0 +msgid "Diagram" +msgstr "" + +#. module: base +#: help:multi_company.default,name:0 +msgid "Name it to easily find a record" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.grant_menu_access +#: model:ir.ui.menu,name:base.menu_grant_menu_access +msgid "Menu Items" +msgstr "" + +#. module: base +#: constraint:ir.rule:0 +msgid "Rules are not supported for osv_memory objects !" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_event_association +#: model:ir.ui.menu,name:base.menu_event_main +msgid "Events Organisation" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.ir_sequence_actions +#: model:ir.ui.menu,name:base.menu_custom_action +#: model:ir.ui.menu,name:base.menu_ir_sequence_actions +#: model:ir.ui.menu,name:base.next_id_6 +#: view:workflow.activity:0 +msgid "Actions" +msgstr "" + +#. module: base +#: selection:res.request,priority:0 +msgid "High" +msgstr "" + +#. module: base +#: field:ir.exports.line,export_id:0 +msgid "Export" +msgstr "" + +#. module: base +#: model:res.country,name:base.hr +msgid "Croatia" +msgstr "" + +#. module: base +#: help:res.bank,bic:0 +msgid "Bank Identifier Code" +msgstr "" + +#. module: base +#: model:res.country,name:base.tm +msgid "Turkmenistan" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_actions.py:597 +#: code:addons/base/ir/ir_actions.py:629 +#: code:addons/base/ir/ir_actions.py:713 +#: code:addons/base/ir/ir_actions.py:716 +#: code:addons/base/ir/ir_model.py:114 +#: code:addons/base/ir/ir_model.py:204 +#: code:addons/base/ir/ir_model.py:218 +#: code:addons/base/ir/ir_model.py:232 +#: code:addons/base/ir/ir_model.py:250 +#: code:addons/base/ir/ir_model.py:255 +#: code:addons/base/ir/ir_model.py:258 +#: code:addons/base/module/module.py:215 +#: code:addons/base/module/module.py:258 +#: code:addons/base/module/module.py:262 +#: code:addons/base/module/module.py:268 +#: code:addons/base/module/module.py:303 +#: code:addons/base/module/module.py:321 +#: code:addons/base/module/module.py:336 +#: code:addons/base/module/module.py:429 +#: code:addons/base/module/module.py:531 +#: code:addons/base/publisher_warranty/publisher_warranty.py:163 +#: code:addons/base/publisher_warranty/publisher_warranty.py:281 +#: code:addons/base/res/res_currency.py:100 +#: code:addons/base/res/res_user.py:57 +#: code:addons/base/res/res_user.py:66 +#: code:addons/custom.py:558 +#: code:addons/orm.py:3199 +#, python-format +msgid "Error" +msgstr "" + +#. module: base +#: model:res.country,name:base.pm +msgid "Saint Pierre and Miquelon" +msgstr "" + +#. module: base +#: help:ir.actions.report.xml,header:0 +msgid "Add or not the coporate RML header" +msgstr "" + +#. module: base +#: help:workflow.transition,act_to:0 +msgid "The destination activity." +msgstr "" + +#. module: base +#: view:base.module.update:0 +#: view:base.update.translations:0 +msgid "Update" +msgstr "" + +#. module: base +#: model:ir.actions.report.xml,name:base.ir_module_reference_print +msgid "Technical guide" +msgstr "" + +#. module: base +#: model:res.country,name:base.tz +msgid "Tanzania" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Danish / Dansk" +msgstr "" + +#. module: base +#: selection:ir.model.fields,select_level:0 +msgid "Advanced Search (deprecated)" +msgstr "" + +#. module: base +#: model:res.country,name:base.cx +msgid "Christmas Island" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Other Actions Configuration" +msgstr "" + +#. module: base +#: view:res.config.installer:0 +msgid "Install Modules" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.res_partner_canal-act +#: model:ir.model,name:base.model_res_partner_canal +#: model:ir.ui.menu,name:base.menu_res_partner_canal-act +#: view:res.partner.canal:0 +msgid "Channels" +msgstr "" + +#. module: base +#: view:ir.ui.view:0 +msgid "Extra Info" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.act_values_form_action +#: model:ir.ui.menu,name:base.menu_values_form_action +msgid "Client Events" +msgstr "" + +#. module: base +#: view:ir.module.module:0 +msgid "Schedule for Installation" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_partner_wizard_ean_check +msgid "Ean Check" +msgstr "" + +#. module: base +#: sql_constraint:res.config.users:0 +#: sql_constraint:res.users:0 +msgid "You can not have two users with the same login !" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_multi_company_default +msgid "Default multi company" +msgstr "" + +#. module: base +#: view:res.request:0 +msgid "Send" +msgstr "" + +#. module: base +#: field:res.config.users,menu_tips:0 +#: field:res.users,menu_tips:0 +msgid "Menu Tips" +msgstr "" + +#. module: base +#: field:ir.translation,src:0 +msgid "Source" +msgstr "" + +#. module: base +#: help:res.partner.address,partner_id:0 +msgid "Keep empty for a private address, not related to partner." +msgstr "" + +#. module: base +#: model:res.country,name:base.vu +msgid "Vanuatu" +msgstr "" + +#. module: base +#: view:res.company:0 +msgid "Internal Header/Footer" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_export_language.py:59 +#, python-format +msgid "" +"Save this document to a .tgz file. This archive containt UTF-8 %s files and " +"may be uploaded to launchpad." +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +msgid "Start configuration" +msgstr "" + +#. module: base +#: view:base.language.export:0 +msgid "_Export" +msgstr "" + +#. module: base +#: field:base.language.install,state:0 +#: field:base.module.import,state:0 +#: field:base.module.update,state:0 +msgid "state" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Catalan / Català" +msgstr "" + +#. module: base +#: model:res.country,name:base.do +msgid "Dominican Republic" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Serbian (Cyrillic) / српски" +msgstr "" + +#. module: base +#: code:addons/orm.py:2161 +#, python-format +msgid "" +"Invalid group_by specification: \"%s\".\n" +"A group_by specification must be a list of valid fields." +msgstr "" + +#. module: base +#: model:res.country,name:base.sa +msgid "Saudi Arabia" +msgstr "" + +#. module: base +#: help:res.partner,supplier:0 +msgid "" +"Check this box if the partner is a supplier. If it's not checked, purchase " +"people will not see it when encoding a purchase order." +msgstr "" + +#. module: base +#: field:ir.model.fields,relation_field:0 +msgid "Relation Field" +msgstr "" + +#. module: base +#: view:res.partner.event:0 +msgid "Event Logs" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_module_configuration.py:37 +#, python-format +msgid "System Configuration done" +msgstr "" + +#. module: base +#: field:workflow.triggers,instance_id:0 +msgid "Destination Instance" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,multi:0 +#: field:ir.actions.wizard,multi:0 +msgid "Action on Multiple Doc." +msgstr "" + +#. module: base +#: view:base.language.export:0 +msgid "https://translations.launchpad.net/openobject" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,report_xml:0 +msgid "XML path" +msgstr "" + +#. module: base +#: selection:ir.actions.todo,restart:0 +msgid "On Skip" +msgstr "" + +#. module: base +#: model:res.country,name:base.gn +msgid "Guinea" +msgstr "" + +#. module: base +#: model:res.country,name:base.lu +msgid "Luxembourg" +msgstr "" + +#. module: base +#: help:ir.values,key2:0 +msgid "" +"The kind of action or button in the client side that will trigger the action." +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_ui_menu.py:285 +#, python-format +msgid "Error ! You can not create recursive Menu." +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_publisher_warranty_contract_add_wizard +#: model:ir.ui.menu,name:base.menu_publisher_warranty_contract_add +#: view:publisher_warranty.contract.wizard:0 +msgid "Register a Contract" +msgstr "" + +#. module: base +#: view:ir.rule:0 +msgid "" +"3. If user belongs to several groups, the results from step 2 are combined " +"with logical OR operator" +msgstr "" + +#. module: base +#: code:addons/base/publisher_warranty/publisher_warranty.py:145 +#, python-format +msgid "Please check your publisher warranty contract name and validity." +msgstr "" + +#. module: base +#: model:res.country,name:base.sv +msgid "El Salvador" +msgstr "" + +#. module: base +#: field:res.bank,phone:0 +#: field:res.partner,phone:0 +#: field:res.partner.address,phone:0 +msgid "Phone" +msgstr "" + +#. module: base +#: field:ir.cron,active:0 +#: field:ir.sequence,active:0 +#: field:res.bank,active:0 +#: field:res.config.users,active:0 +#: field:res.currency,active:0 +#: field:res.lang,active:0 +#: field:res.partner,active:0 +#: field:res.partner.address,active:0 +#: field:res.partner.canal,active:0 +#: field:res.partner.category,active:0 +#: field:res.request,active:0 +#: field:res.users,active:0 +#: view:workflow.instance:0 +#: view:workflow.workitem:0 +msgid "Active" +msgstr "" + +#. module: base +#: model:res.country,name:base.th +msgid "Thailand" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_crm_config_lead +msgid "Leads & Opportunities" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Romanian / română" +msgstr "" + +#. module: base +#: view:res.log:0 +msgid "System Logs" +msgstr "" + +#. module: base +#: selection:workflow.activity,join_mode:0 +#: selection:workflow.activity,split_mode:0 +msgid "And" +msgstr "" + +#. module: base +#: field:ir.model.fields,relation:0 +msgid "Object Relation" +msgstr "" + +#. module: base +#: view:ir.rule:0 +#: view:res.partner:0 +msgid "General" +msgstr "" + +#. module: base +#: model:res.country,name:base.uz +msgid "Uzbekistan" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_act_window +#: selection:ir.ui.menu,action:0 +msgid "ir.actions.act_window" +msgstr "" + +#. module: base +#: field:ir.rule,perm_create:0 +msgid "Apply For Create" +msgstr "" + +#. module: base +#: model:res.country,name:base.vi +msgid "Virgin Islands (USA)" +msgstr "" + +#. module: base +#: model:res.country,name:base.tw +msgid "Taiwan" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_currency_rate +msgid "Currency Rate" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.grant_menu_access +msgid "" +"Manage and customize the items available and displayed in your OpenERP " +"system menu. You can delete an item by clicking on the box at the beginning " +"of each line and then delete it through the button that appeared. Items can " +"be assigned to specific groups in order to make them accessible to some " +"users within the system." +msgstr "" + +#. module: base +#: field:ir.ui.view,field_parent:0 +msgid "Child Field" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,usage:0 +#: field:ir.actions.act_window_close,usage:0 +#: field:ir.actions.actions,usage:0 +#: field:ir.actions.report.xml,usage:0 +#: field:ir.actions.server,usage:0 +#: field:ir.actions.wizard,usage:0 +msgid "Action Usage" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_workflow_workitem +msgid "workflow.workitem" +msgstr "" + +#. module: base +#: selection:ir.module.module,state:0 +msgid "Not Installable" +msgstr "" + +#. module: base +#: report:ir.module.reference.graph:0 +msgid "View :" +msgstr "" + +#. module: base +#: field:ir.model.fields,view_load:0 +msgid "View Auto-Load" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:232 +#, python-format +msgid "You cannot remove the field '%s' !" +msgstr "" + +#. module: base +#: field:ir.exports,resource:0 +#: view:ir.property:0 +#: field:ir.property,res_id:0 +msgid "Resource" +msgstr "" + +#. module: base +#: field:ir.ui.menu,web_icon:0 +msgid "Web Icon File" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Persian / فارس" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +msgid "View Ordering" +msgstr "" + +#. module: base +#: code:addons/base/module/wizard/base_module_upgrade.py:95 +#, python-format +msgid "Unmet dependency !" +msgstr "" + +#. module: base +#: view:base.language.import:0 +msgid "" +"Supported file formats: *.csv (Comma-separated values) or *.po (GetText " +"Portable Objects)" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:487 +#, python-format +msgid "" +"You can not delete this document (%s) ! Be sure your user belongs to one of " +"these groups: %s." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_base_module_configuration +msgid "base.module.configuration" +msgstr "" + +#. module: base +#: field:base.language.export,name:0 +#: field:ir.attachment,datas_fname:0 +msgid "Filename" +msgstr "" + +#. module: base +#: field:ir.model,access_ids:0 +#: view:ir.model.access:0 +msgid "Access" +msgstr "" + +#. module: base +#: model:res.country,name:base.sk +msgid "Slovak Republic" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.publisher_warranty +msgid "Publisher Warranty" +msgstr "" + +#. module: base +#: model:res.country,name:base.aw +msgid "Aruba" +msgstr "" + +#. module: base +#: model:res.country,name:base.ar +msgid "Argentina" +msgstr "" + +#. module: base +#: field:res.groups,name:0 +msgid "Group Name" +msgstr "" + +#. module: base +#: model:res.country,name:base.bh +msgid "Bahrain" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_12 +msgid "Segmentation" +msgstr "" + +#. module: base +#: view:ir.attachment:0 +#: field:ir.attachment,company_id:0 +#: field:ir.default,company_id:0 +#: field:ir.property,company_id:0 +#: field:ir.sequence,company_id:0 +#: field:ir.values,company_id:0 +#: view:res.company:0 +#: field:res.config.users,company_id:0 +#: field:res.currency,company_id:0 +#: field:res.partner,company_id:0 +#: field:res.partner.address,company_id:0 +#: view:res.users:0 +#: field:res.users,company_id:0 +msgid "Company" +msgstr "" + +#. module: base +#: view:res.users:0 +msgid "Email & Signature" +msgstr "" + +#. module: base +#: view:publisher_warranty.contract:0 +msgid "Publisher Warranty Contract" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Bulgarian / български език" +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_aftersale +msgid "After-Sale Services" +msgstr "" + +#. module: base +#: view:ir.actions.todo:0 +msgid "Launch" +msgstr "" + +#. module: base +#: field:ir.actions.act_window,limit:0 +msgid "Limit" +msgstr "" + +#. module: base +#: help:ir.actions.server,wkf_model_id:0 +msgid "Workflow to be executed on this model." +msgstr "" + +#. module: base +#: model:res.country,name:base.jm +msgid "Jamaica" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_partner_category_form +msgid "" +"Manage the partner categories in order to better classify them for tracking " +"and analysis purposes. A partner may belong to several categories and " +"categories have a hierarchy structure: a partner belonging to a category " +"also belong to his parent category." +msgstr "" + +#. module: base +#: model:res.country,name:base.az +msgid "Azerbaijan" +msgstr "" + +#. module: base +#: code:addons/base/res/partner/partner.py:250 +#, python-format +msgid "Warning" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Arabic / الْعَرَبيّة" +msgstr "" + +#. module: base +#: model:res.country,name:base.vg +msgid "Virgin Islands (British)" +msgstr "" + +#. module: base +#: view:ir.property:0 +#: model:ir.ui.menu,name:base.next_id_15 +msgid "Parameters" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Czech / Čeština" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Trigger Configuration" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,help:base.action_partner_supplier_form +msgid "" +"You can access all information regarding your suppliers from the supplier " +"form: accounting data, history of emails, meetings, purchases, etc. You can " +"uncheck the 'Suppliers' filter button in order to search in all your " +"partners, including customers and prospects." +msgstr "" + +#. module: base +#: model:res.country,name:base.rw +msgid "Rwanda" +msgstr "" + +#. module: base +#: view:ir.sequence:0 +msgid "Day of the week (0:Monday): %(weekday)s" +msgstr "" + +#. module: base +#: model:res.country,name:base.ck +msgid "Cook Islands" +msgstr "" + +#. module: base +#: field:ir.model.data,noupdate:0 +msgid "Non Updatable" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Klingon" +msgstr "" + +#. module: base +#: model:res.country,name:base.sg +msgid "Singapore" +msgstr "" + +#. module: base +#: selection:ir.actions.act_window,target:0 +msgid "Current Window" +msgstr "" + +#. module: base +#: view:ir.values:0 +msgid "Action Source" +msgstr "" + +#. module: base +#: view:res.config.view:0 +msgid "" +"If you use OpenERP for the first time we strongly advise you to select the " +"simplified interface, which has less features but is easier. You can always " +"switch later from the user preferences." +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_country +#: field:res.bank,country:0 +#: view:res.country:0 +#: field:res.country.state,country_id:0 +#: field:res.partner,country:0 +#: view:res.partner.address:0 +#: field:res.partner.address,country_id:0 +#: field:res.partner.bank,country_id:0 +msgid "Country" +msgstr "" + +#. module: base +#: field:ir.model.fields,complete_name:0 +#: field:ir.ui.menu,complete_name:0 +msgid "Complete Name" +msgstr "" + +#. module: base +#: field:ir.values,object:0 +msgid "Is Object" +msgstr "" + +#. module: base +#: view:ir.rule:0 +msgid "" +"1. Global rules are combined together with a logical AND operator, and with " +"the result of the following steps" +msgstr "" + +#. module: base +#: field:res.partner.category,name:0 +msgid "Category Name" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_15 +msgid "IT sector" +msgstr "" + +#. module: base +#: view:ir.actions.act_window:0 +msgid "Select Groups" +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%X - Appropriate time representation." +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Spanish (SV) / Español (SV)" +msgstr "" + +#. module: base +#: help:res.lang,grouping:0 +msgid "" +"The Separator Format should be like [,n] where 0 < n :starting from Unit " +"digit.-1 will end the separation. e.g. [3,2,-1] will represent 106500 to be " +"1,06,500;[1,2,-1] will represent it to be 106,50,0;[3] will represent it as " +"106,500. Provided ',' as the thousand separator in each case." +msgstr "" + +#. module: base +#: view:res.company:0 +msgid "Portrait" +msgstr "" + +#. module: base +#: code:addons/base/ir/ir_model.py:317 +#, python-format +msgid "Can only rename one column at a time!" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "Wizard Button" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "Report/Template" +msgstr "" + +#. module: base +#: selection:ir.actions.act_window.view,view_mode:0 +#: selection:ir.ui.view,type:0 +#: selection:wizard.ir.model.menu.create.line,view_type:0 +msgid "Graph" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_ir_actions_server +#: selection:ir.ui.menu,action:0 +msgid "ir.actions.server" +msgstr "" + +#. module: base +#: field:ir.actions.configuration.wizard,progress:0 +#: field:res.config,progress:0 +#: field:res.config.installer,progress:0 +#: field:res.config.users,progress:0 +#: field:res.config.view,progress:0 +msgid "Configuration Progress" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.act_ir_actions_todo_form +#: model:ir.ui.menu,name:base.menu_ir_actions_todo_form +#: model:ir.ui.menu,name:base.next_id_11 +msgid "Configuration Wizards" +msgstr "" + +#. module: base +#: field:res.lang,code:0 +msgid "Locale Code" +msgstr "" + +#. module: base +#: field:workflow.activity,split_mode:0 +msgid "Split Mode" +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +msgid "Note that this operation might take a few minutes." +msgstr "" + +#. module: base +#: model:ir.ui.menu,name:base.menu_localisation +msgid "Localisation" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "Action to Launch" +msgstr "" + +#. module: base +#: view:ir.cron:0 +msgid "Execution" +msgstr "" + +#. module: base +#: field:ir.actions.server,condition:0 +#: field:workflow.transition,condition:0 +msgid "Condition" +msgstr "" + +#. module: base +#: help:ir.values,model_id:0 +msgid "This field is not used, it only helps you to select a good model." +msgstr "" + +#. module: base +#: field:ir.ui.view,name:0 +msgid "View Name" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Italian / Italiano" +msgstr "" + +#. module: base +#: field:ir.actions.report.xml,attachment:0 +msgid "Save As Attachment Prefix" +msgstr "" + +#. module: base +#: view:ir.actions.server:0 +msgid "" +"Only one client action will be executed, last client action will be " +"considered in case of multiple client actions." +msgstr "" + +#. module: base +#: view:res.lang:0 +msgid "%j - Day of the year [001,366]." +msgstr "" + +#. module: base +#: field:ir.actions.server,mobile:0 +msgid "Mobile No" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_partner_by_category +#: model:ir.actions.act_window,name:base.action_partner_category_form +#: model:ir.model,name:base.model_res_partner_category +#: model:ir.ui.menu,name:base.menu_partner_category_form +#: view:res.partner.category:0 +msgid "Partner Categories" +msgstr "" + +#. module: base +#: view:base.module.upgrade:0 +msgid "System Update" +msgstr "" + +#. module: base +#: selection:ir.translation,type:0 +msgid "Wizard Field" +msgstr "" + +#. module: base +#: help:ir.sequence,prefix:0 +msgid "Prefix value of the record for the sequence" +msgstr "" + +#. module: base +#: model:res.country,name:base.sc +msgid "Seychelles" +msgstr "" + +#. module: base +#: model:ir.model,name:base.model_res_partner_bank +#: view:res.partner.bank:0 +msgid "Bank Accounts" +msgstr "" + +#. module: base +#: model:res.country,name:base.sl +msgid "Sierra Leone" +msgstr "" + +#. module: base +#: view:res.company:0 +#: view:res.partner:0 +msgid "General Information" +msgstr "" + +#. module: base +#: model:res.country,name:base.tc +msgid "Turks and Caicos Islands" +msgstr "" + +#. module: base +#: field:res.partner.bank,owner_name:0 +msgid "Account Owner" +msgstr "" + +#. module: base +#: code:addons/base/res/res_user.py:256 +#, python-format +msgid "Company Switch Warning" +msgstr "" + +#. module: base +#: model:ir.actions.act_window,name:base.action_res_widget_wizard +msgid "Homepage Widgets Management" +msgstr "" + +#. module: base +#: field:workflow,osv:0 +#: field:workflow.instance,res_type:0 +msgid "Resource Object" +msgstr "" + +#. module: base +#: help:ir.sequence,number_increment:0 +msgid "The next number of the sequence will be incremented by this number" +msgstr "" + +#. module: base +#: field:ir.cron,function:0 +#: field:res.partner.address,function:0 +#: selection:workflow.activity,kind:0 +msgid "Function" +msgstr "" + +#. module: base +#: view:res.widget:0 +msgid "Search Widget" +msgstr "" + +#. module: base +#: selection:ir.actions.todo,restart:0 +msgid "Never" +msgstr "" + +#. module: base +#: selection:res.partner.address,type:0 +msgid "Delivery" +msgstr "" + +#. module: base +#: model:res.partner.title,name:base.res_partner_title_pvt_ltd +#: model:res.partner.title,shortcut:base.res_partner_title_pvt_ltd +msgid "Corp." +msgstr "" + +#. module: base +#: model:res.country,name:base.gw +msgid "Guinea Bissau" +msgstr "" + +#. module: base +#: view:workflow.instance:0 +msgid "Workflow Instances" +msgstr "" + +#. module: base +#: code:addons/base/res/partner/partner.py:261 +#, python-format +msgid "Partners: " +msgstr "" + +#. module: base +#: model:res.country,name:base.kp +msgid "North Korea" +msgstr "" + +#. module: base +#: selection:ir.actions.server,state:0 +msgid "Create Object" +msgstr "" + +#. module: base +#: view:ir.filters:0 +#: field:res.log,context:0 +msgid "Context" +msgstr "" + +#. module: base +#: field:res.bank,bic:0 +msgid "BIC/Swift code" +msgstr "" + +#. module: base +#: model:res.partner.category,name:base.res_partner_category_1 +msgid "Prospect" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Polish / Język polski" +msgstr "" + +#. module: base +#: field:ir.exports,name:0 +msgid "Export Name" +msgstr "" + +#. module: base +#: help:res.partner.address,type:0 +msgid "" +"Used to select automatically the right address according to the context in " +"sales and purchases documents." +msgstr "" + +#. module: base +#: model:res.country,name:base.lk +msgid "Sri Lanka" +msgstr "" + +#. module: base +#: selection:base.language.install,lang:0 +msgid "Russian / русский язык" +msgstr "" diff --git a/openerp/addons/base/i18n/pl.po b/openerp/addons/base/i18n/pl.po index 379b29a0e14..794bdbb47c9 100644 --- a/openerp/addons/base/i18n/pl.po +++ b/openerp/addons/base/i18n/pl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2011-03-31 14:18+0000\n" -"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \n" +"PO-Revision-Date: 2011-05-14 20:16+0000\n" +"Last-Translator: Mariusz Wójtowicz \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-04-01 06:04+0000\n" -"X-Generator: Launchpad (build 12559)\n" +"X-Launchpad-Export-Date: 2011-05-15 05:37+0000\n" +"X-Generator: Launchpad (build 12959)\n" #. module: base #: view:ir.filters:0 @@ -171,7 +171,7 @@ msgstr "Swaziland" #: code:addons/orm.py:3653 #, python-format msgid "created." -msgstr "" +msgstr "utworzona." #. module: base #: model:res.partner.category,name:base.res_partner_category_woodsuppliers0 diff --git a/openerp/addons/base/i18n/pt_BR.po b/openerp/addons/base/i18n/pt_BR.po index 53abb10b0b6..a62852f1f30 100644 --- a/openerp/addons/base/i18n/pt_BR.po +++ b/openerp/addons/base/i18n/pt_BR.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: pt_BR\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2011-05-10 19:52+0000\n" -"Last-Translator: Fabien (Open ERP) \n" +"PO-Revision-Date: 2011-05-22 04:28+0000\n" +"Last-Translator: Emerson \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-05-11 04:36+0000\n" +"X-Launchpad-Export-Date: 2011-05-23 05:33+0000\n" "X-Generator: Launchpad (build 12959)\n" #. module: base diff --git a/openerp/addons/base/i18n/ru.po b/openerp/addons/base/i18n/ru.po index b0e0a5320f6..d12cd871aa6 100644 --- a/openerp/addons/base/i18n/ru.po +++ b/openerp/addons/base/i18n/ru.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2011-05-10 19:56+0000\n" +"PO-Revision-Date: 2011-05-26 04:57+0000\n" "Last-Translator: Pomazan Bogdan \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-05-11 04:36+0000\n" +"X-Launchpad-Export-Date: 2011-05-27 04:45+0000\n" "X-Generator: Launchpad (build 12959)\n" #. module: base @@ -613,7 +613,7 @@ msgstr "Королевство Камбоджа" #: model:ir.ui.menu,name:base.menu_ir_sequence_form #: model:ir.ui.menu,name:base.next_id_5 msgid "Sequences" -msgstr "Последовательности" +msgstr "Нумерация" #. module: base #: model:ir.model,name:base.model_base_language_import @@ -1139,7 +1139,7 @@ msgstr "Банк" #. module: base #: model:ir.model,name:base.model_ir_exports_line msgid "ir.exports.line" -msgstr "Строки экспорта" +msgstr "ir.exports.line" #. module: base #: help:base.language.install,overwrite:0 @@ -1191,7 +1191,7 @@ msgstr "" #: field:res.config.users,login:0 #: field:res.users,login:0 msgid "Login" -msgstr "Вход" +msgstr "Логин" #. module: base #: view:ir.actions.server:0 @@ -2069,7 +2069,7 @@ msgstr "Куба" #. module: base #: model:ir.model,name:base.model_res_partner_event msgid "res.partner.event" -msgstr "События партнера" +msgstr "res.partner.event" #. module: base #: model:res.widget,title:base.facebook_widget @@ -2995,7 +2995,7 @@ msgstr "Испанский (HN) / Español (HN)" #. module: base #: view:ir.sequence.type:0 msgid "Sequence Type" -msgstr "Тип последовательности" +msgstr "Тип нумерации" #. module: base #: view:ir.ui.view.custom:0 @@ -3280,7 +3280,7 @@ msgstr "Договор уже зарегистрирован в системе." #. module: base #: help:ir.sequence,suffix:0 msgid "Suffix value of the record for the sequence" -msgstr "Суффикс записи для последовательности" +msgstr "Суффикс записи для нумерации" #. module: base #: selection:base.language.install,lang:0 @@ -3528,10 +3528,11 @@ msgid "" "Would your payment have been carried out after this mail was sent, please " "consider the present one as void." msgstr "" -"Уведомляем, что наступило время следующего платежа. Если платёж был " -"отправлен — предоставьте, пожалуйста, подробности этого платежа. Если платёж " -"будет и далее задерживаться, свяжитесь, пожалуйста, с нами. " -" Если платёж был отправлен до отправки этого письма — возможно, письмо " +"Уведомляем, что наступило время следующего платежа. \n" +"Если платёж был отправлен — предоставьте, пожалуйста, подробности этого " +"платежа. \n" +"Если платёж будет и далее задерживаться, свяжитесь, пожалуйста, с нами.\n" +"Если платёж был отправлен до отправки этого письма — возможно, письмо " "отправлено по ошибке." #. module: base @@ -4794,7 +4795,7 @@ msgstr "Бутан" #. module: base #: help:ir.sequence,number_next:0 msgid "Next number of this sequence" -msgstr "Следующее число в этой последовательности" +msgstr "Следующее число в этой нумерации" #. module: base #: model:res.partner.category,name:base.res_partner_category_11 @@ -5170,7 +5171,7 @@ msgstr "Контакт" #. module: base #: model:ir.model,name:base.model_ir_ui_menu msgid "ir.ui.menu" -msgstr "Меню" +msgstr "ir.ui.menu" #. module: base #: model:res.country,name:base.us @@ -5197,7 +5198,7 @@ msgstr "Отчет RML" #. module: base #: model:ir.model,name:base.model_ir_server_object_lines msgid "ir.server.object.lines" -msgstr "События сервера" +msgstr "ir.server.object.lines" #. module: base #: code:addons/base/module/module.py:531 @@ -5503,7 +5504,7 @@ msgstr "Обновление / Установка модуля" #. module: base #: model:ir.model,name:base.model_ir_actions_configuration_wizard msgid "ir.actions.configuration.wizard" -msgstr "Диалог конфигурировая события" +msgstr "ir.actions.configuration.wizard" #. module: base #: view:res.lang:0 @@ -5794,7 +5795,7 @@ msgstr "Дата создания" #. module: base #: model:ir.model,name:base.model_ir_actions_todo msgid "ir.actions.todo" -msgstr "ТОДО" +msgstr "ir.actions.todo" #. module: base #: code:addons/base/res/res_config.py:94 @@ -6227,7 +6228,7 @@ msgstr "Сбор средств" #: model:ir.actions.act_window,name:base.ir_sequence_type #: model:ir.ui.menu,name:base.menu_ir_sequence_type msgid "Sequence Codes" -msgstr "Последовательность кодов" +msgstr "Коды нумераций" #. module: base #: selection:base.language.install,lang:0 @@ -6749,7 +6750,7 @@ msgstr "Мартиника (заморский регион Франции)" #. module: base #: view:ir.sequence.type:0 msgid "Sequences Type" -msgstr "Тип последовательностей" +msgstr "Тип нумерации" #. module: base #: model:ir.actions.act_window,name:base.res_request-act @@ -6803,7 +6804,7 @@ msgid "" "number of modules currently installed)..." msgstr "" "Пожалуйста подождите, эта операция может занять несколько минут (зависит от " -"количества устанавливаемых модулей)..." +"количества установленных модулей)..." #. module: base #: field:ir.ui.menu,child_id:0 @@ -6990,7 +6991,7 @@ msgstr "Часовой пояс" #: model:ir.model,name:base.model_ir_actions_report_xml #: selection:ir.ui.menu,action:0 msgid "ir.actions.report.xml" -msgstr "События отчетов" +msgstr "ir.actions.report.xml" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss @@ -7309,7 +7310,7 @@ msgstr "Месяц: %(месяц)ы" #: field:res.widget.user,sequence:0 #: field:wizard.ir.model.menu.create.line,sequence:0 msgid "Sequence" -msgstr "Последовательность" +msgstr "Нумерация" #. module: base #: model:res.country,name:base.tn @@ -7865,8 +7866,9 @@ msgid "" msgstr "" "Можно устанавливать новые модули для подключения новых функций, меню, " "отчётов или данных в вашем экземпляре OpenERP. Для установки модулей, " -"нажмите на кнопку «Отметить для установки» в представлении в виде формы, " -"затем нажмите «Применить отмеченные обновления», чтобы обновить вашу систему." +"нажмите на кнопку «Запланировать установку» в представлении в виде формы, " +"затем нажмите «Выполнить запланированные обновления», чтобы обновить вашу " +"систему." #. module: base #: model:ir.ui.menu,name:base.menu_emails @@ -8055,7 +8057,7 @@ msgstr "Габон" #. module: base #: model:ir.model,name:base.model_ir_model_data msgid "ir.model.data" -msgstr "Данные" +msgstr "ir.model.data" #. module: base #: view:ir.model:0 @@ -8350,7 +8352,7 @@ msgstr "Адресная книга" #. module: base #: model:ir.model,name:base.model_ir_sequence_type msgid "ir.sequence.type" -msgstr "Тип последовательности" +msgstr "ir.sequence.type" #. module: base #: selection:base.language.export,format:0 @@ -8642,7 +8644,7 @@ msgstr "События клиента" #. module: base #: view:ir.module.module:0 msgid "Schedule for Installation" -msgstr "Расписание установки" +msgstr "Запланировать установку" #. module: base #: model:ir.model,name:base.model_partner_wizard_ean_check @@ -8689,7 +8691,7 @@ msgstr "Вануату" #. module: base #: view:res.company:0 msgid "Internal Header/Footer" -msgstr "Внутренние верхний / нижний колонтитулы" +msgstr "Внутренние верхний/нижний колонтитулы" #. module: base #: code:addons/base/module/wizard/base_export_language.py:59 @@ -9488,7 +9490,7 @@ msgstr "Поле мастера" #. module: base #: help:ir.sequence,prefix:0 msgid "Prefix value of the record for the sequence" -msgstr "Префикс записи для последовательности" +msgstr "Префикс для нумерации" #. module: base #: model:res.country,name:base.sc @@ -9542,7 +9544,7 @@ msgstr "Объект ресурса" #. module: base #: help:ir.sequence,number_increment:0 msgid "The next number of the sequence will be incremented by this number" -msgstr "Следующее число последовательности будет увеличено на это число" +msgstr "Следующее число в нумерации будет увеличено на это число" #. module: base #: field:ir.cron,function:0 diff --git a/openerp/addons/base/i18n/sv.po b/openerp/addons/base/i18n/sv.po index 01fb3ec3071..fa9649040cc 100644 --- a/openerp/addons/base/i18n/sv.po +++ b/openerp/addons/base/i18n/sv.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2011-01-30 16:12+0000\n" -"Last-Translator: Frank \"knarF\" M. Eriksson \n" +"PO-Revision-Date: 2011-05-20 16:43+0000\n" +"Last-Translator: Anders Wallenquist \n" "Language-Team: <>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-01-31 04:54+0000\n" -"X-Generator: Launchpad (build 12177)\n" +"X-Launchpad-Export-Date: 2011-05-21 06:14+0000\n" +"X-Generator: Launchpad (build 12959)\n" #. module: base #: view:ir.filters:0 @@ -33,7 +33,7 @@ msgstr "St Helena" #. module: base #: view:ir.actions.report.xml:0 msgid "Other Configuration" -msgstr "Övrig Konfiguration" +msgstr "Övrig konfiguration" #. module: base #: selection:ir.property,type:0 @@ -47,7 +47,7 @@ msgid "" "The second argument of the many2many field %s must be a SQL table !You used " "%s, which is not a valid SQL table name." msgstr "" -"Det andra argumentet i many2many fältet %s måste vara en SQL tabell! Du " +"Det andra argumentet i many2many-fältet %s måste vara en SQL-tabell. Du " "använde %s , som inte är ett giltigt tabellnamn" #. module: base @@ -90,7 +90,7 @@ msgstr "Ungersk / Magyar" #. module: base #: selection:ir.model.fields,select_level:0 msgid "Not Searchable" -msgstr "Inte Sökbara" +msgstr "Inte sökbara" #. module: base #: selection:base.language.install,lang:0 @@ -105,7 +105,7 @@ msgstr "Arbetsflöde på" #. module: base #: field:ir.actions.act_window,display_menu_tip:0 msgid "Display Menu Tips" -msgstr "Visa Meny Tips" +msgstr "Visa menytips" #. module: base #: view:ir.module.module:0 @@ -153,8 +153,8 @@ msgid "" "Properties of base fields cannot be altered in this manner! Please modify " "them through Python code, preferably through a custom addon!" msgstr "" -"Egenskaperna för basfälten can inte ändras på detta sätt! var vänlig och " -"ändra dem med Python kod, eller via en egengjord Addon." +"Egenskaperna för basfälten kan inte ändras på detta sätt. Var vänlig och " +"ändra dem med Pythonkod, eller via ett eget tillägg." #. module: base #: code:addons/osv.py:133 @@ -220,7 +220,8 @@ msgstr "Sök företag" #: code:addons/base/res/res_user.py:132 #, python-format msgid "\"smtp_server\" needs to be set to send mails to users" -msgstr "\"Smtp_server\" måste ställas in för att skicka mail till användare" +msgstr "" +"\"Smtp_server\" måste ställas in för att skicka e-post till användare" #. module: base #: code:addons/base/module/wizard/base_export_language.py:60 @@ -260,13 +261,13 @@ msgid "" "Save this document to a %s file and edit it with a specific software or a " "text editor. The file encoding is UTF-8." msgstr "" -"Spara detta dokument till en %s fil och redigera den med en speciell " +"Spara detta dokument till en %sfil och redigera den med en speciell " "programvara eller en textredigerare. Filkodningen är UTF-8." #. module: base #: sql_constraint:res.lang:0 msgid "The name of the language must be unique !" -msgstr "Namnet på språket måste vara unikt!" +msgstr "Namnet på språket måste vara unikt." #. module: base #: selection:res.request,state:0 @@ -282,7 +283,7 @@ msgstr "Guidenamn" #: code:addons/orm.py:2160 #, python-format msgid "Invalid group_by" -msgstr "Felaktig Group_by" +msgstr "Felaktig group_by" #. module: base #: field:res.partner,credit_limit:0 @@ -379,7 +380,7 @@ msgstr "" #. module: base #: model:res.country,name:base.gf msgid "French Guyana" -msgstr "French Guyana" +msgstr "Franska Guyana" #. module: base #: selection:base.language.install,lang:0 @@ -389,7 +390,7 @@ msgstr "Grekiska / Ελληνικά" #. module: base #: selection:base.language.install,lang:0 msgid "Bosnian / bosanski jezik" -msgstr "Bosnian / bosanski jezik" +msgstr "Bosniska/bosanski jezik" #. module: base #: help:ir.actions.report.xml,attachment_use:0 @@ -404,7 +405,7 @@ msgstr "" #: code:addons/orm.py:904 #, python-format msgid "The read method is not implemented on this object !" -msgstr "Läsmetoden är ej implementerad för detta objekt!" +msgstr "Läsmetoden är inte implementerad i detta objekt." #. module: base #: help:res.lang,iso_code:0 @@ -436,13 +437,13 @@ msgstr "Colombia" #. module: base #: view:ir.module.module:0 msgid "Schedule Upgrade" -msgstr "Schemalägg Uppgradering" +msgstr "Schemalägg uppgradering" #. module: base #: code:addons/orm.py:838 #, python-format msgid "Key/value '%s' not found in selection field '%s'" -msgstr "" +msgstr "Nyckel/värde '%s' saknas i urvalsfältet '%s'" #. module: base #: help:res.country,code:0 @@ -450,7 +451,7 @@ msgid "" "The ISO country code in two chars.\n" "You can use this field for quick search." msgstr "" -"ISO landskod med två tecken.\n" +"ISO-landskod med två tecken.\n" "Du kan använda detta fält för snabbsökning." #. module: base @@ -490,7 +491,7 @@ msgstr "Diverse leverantörer" #: code:addons/base/ir/ir_model.py:255 #, python-format msgid "Custom fields must have a name that starts with 'x_' !" -msgstr "Anpassade fält måste ha ett namn som börjar med 'x_' !" +msgstr "Anpassade fält måste ha ett namn som börjar med 'x_' ." #. module: base #: help:ir.actions.server,action_id:0 @@ -521,7 +522,7 @@ msgstr "" #. module: base #: field:workflow.transition,trigger_expr_id:0 msgid "Trigger Expression" -msgstr "Trigger uttryck" +msgstr "Trigger-uttryck" #. module: base #: model:res.country,name:base.jo @@ -571,9 +572,9 @@ msgid "" "Launchpad.net, our open source project management facility. We use their " "online interface to synchronize all translations efforts." msgstr "" -"OpenERP översättningar (kärna, moduler, klienter) sköts genom Launchpad.net, " -"vårat öppen källkods projekthanteringssystem. Vi använder deras gränssnitt " -"för att synkronisera alla översättningar." +"OpenERP-översättningar (kärna, moduler, klienter) sköts genom Launchpad.net, " +"vårt öppenkällkods-projekthanteringssystem. Vi använder deras gränssnitt för " +"att synkronisera alla översättningar." #. module: base #: field:res.partner,title:0 @@ -583,7 +584,7 @@ msgstr "Partnersida" #. module: base #: selection:base.language.install,lang:0 msgid "Swedish / svenska" -msgstr "Swedish / svenska" +msgstr "Svenska" #. module: base #: model:res.country,name:base.rs @@ -598,7 +599,7 @@ msgstr "Guidevy" #. module: base #: model:res.country,name:base.kh msgid "Cambodia, Kingdom of" -msgstr "Cambodia, Kingdom of" +msgstr "Kambodja (kungariket)" #. module: base #: model:ir.actions.act_window,name:base.ir_sequence_form @@ -661,7 +662,7 @@ msgstr "Mina partners" #. module: base #: view:ir.actions.report.xml:0 msgid "XML Report" -msgstr "XML rapport" +msgstr "XML-rapport" #. module: base #: model:res.country,name:base.es @@ -677,7 +678,7 @@ msgstr "Import / Export" #: help:ir.actions.act_window,domain:0 msgid "" "Optional domain filtering of the destination data, as a Python expression" -msgstr "Valfri domänfiltrering av slutdatan, i form av ett python uttryck" +msgstr "Valfri domänfiltrering av slutdatan, i form av ett Pythonuttryck" #. module: base #: model:ir.actions.act_window,name:base.action_view_base_module_upgrade @@ -729,7 +730,7 @@ msgstr "Arbetsdagar" #. module: base #: selection:ir.module.module,license:0 msgid "Other OSI Approved Licence" -msgstr "Övrig OSI godkänd licens" +msgstr "Övrig OSI-godkänd licens" #. module: base #: help:res.config.users,context_lang:0 @@ -772,7 +773,7 @@ msgstr "client_action_multi, client_action_relate" #. module: base #: model:res.country,name:base.ad msgid "Andorra, Principality of" -msgstr "Andorra, Principality of" +msgstr "Andorra, furstendöme" #. module: base #: field:ir.module.category,child_ids:0 @@ -788,7 +789,7 @@ msgstr "ir.config_parameter" #. module: base #: selection:base.language.export,format:0 msgid "TGZ Archive" -msgstr "TGZ arkiv" +msgstr "TGZ-arkiv" #. module: base #: view:res.lang:0 @@ -818,8 +819,8 @@ msgid "" "Language with code \"%s\" is not defined in your system !\n" "Define it through the Administration menu." msgstr "" -"Språket med koden \"%s\" är ej definierat på ditt system!\n" -"Definiera den med hjälp av Administrationsmenyn." +"Språket med koden \"%s\" är inte definierat på ditt system.\n" +"Definiera den med hjälp av administrationsmenyn." #. module: base #: model:res.country,name:base.gu @@ -829,13 +830,13 @@ msgstr "Guam (USA)" #. module: base #: model:ir.ui.menu,name:base.menu_hr_project msgid "Human Resources Dashboard" -msgstr "Personal dashboard" +msgstr "personlig infopanel" #. module: base #: code:addons/base/res/res_user.py:507 #, python-format msgid "Setting empty passwords is not allowed for security reasons!" -msgstr "Att ha tomma lösenord är Ej tillåtet av säkerhetskäl!" +msgstr "Att ha tomma lösenord är inte tillåtet av säkerhetskäl." #. module: base #: selection:ir.actions.server,state:0 @@ -846,7 +847,7 @@ msgstr "Test" #. module: base #: constraint:ir.ui.view:0 msgid "Invalid XML for View Architecture!" -msgstr "Felaktig XML för Vyarkitektur!" +msgstr "Felaktig XML för vyarkitektur." #. module: base #: model:res.country,name:base.ky @@ -869,7 +870,7 @@ msgstr "Övergångar" #: code:addons/orm.py:4020 #, python-format msgid "Record #%d of %s not found, cannot copy!" -msgstr "" +msgstr "Post #%d av %s saknas, kan inte kopiera!" #. module: base #: field:ir.module.module,contributors:0 @@ -890,7 +891,7 @@ msgstr "Kontrakt" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (AR) / Español (AR)" -msgstr "Spanish (AR) / Español (AR)" +msgstr "Spanska (AR) / Español (AR)" #. module: base #: model:res.country,name:base.ug @@ -925,8 +926,8 @@ msgid "" "Launchpad also allows uploading full .po files at once" msgstr "" "För att förbättra eller utvidga officiella översättningar så bör du arbeta " -"direkt mot Launchpad's webgränssnitt (Rosetta). Om du behöver genomföra " -"massöversättningar så tillåter Launchpad direkt uppladdning av .po filer." +"direkt mot Launchpads webbgränssnitt (Rosetta). Om du behöver genomföra " +"massöversättningar så tillåter Launchpad direkt uppladdning av .po-filer." #. module: base #: selection:base.language.install,lang:0 @@ -940,8 +941,8 @@ msgid "" "decimal number [00,53]. All days in a new year preceding the first Monday " "are considered to be in week 0." msgstr "" -"%W - Veckonummer för året (Måndag är veckans första dag) som ett decimaltal " -"[00,53]. All dagar under det nya året som infaller före den första måndagen " +"%W - Veckonummer för året (måndag är veckans första dag) som ett decimaltal " +"[00,53]. Alla dagar under det nya året som infaller före den första måndagen " "antas ligga i vecka 0." #. module: base @@ -958,7 +959,7 @@ msgstr "S. Georgia & S. Sandwich Isls." #. module: base #: field:ir.actions.url,url:0 msgid "Action URL" -msgstr "Händelse URL" +msgstr "Händelse-URL" #. module: base #: field:base.module.import,module_name:0 @@ -968,13 +969,13 @@ msgstr "Modulnamn" #. module: base #: model:res.country,name:base.mh msgid "Marshall Islands" -msgstr "Marshall Islands" +msgstr "Marshallöarna" #. module: base #: code:addons/base/ir/ir_model.py:328 #, python-format msgid "Changing the model of a field is forbidden!" -msgstr "" +msgstr "Förbjudet att ändring av fältets klasstillhörighet!" #. module: base #: model:res.country,name:base.ht @@ -996,20 +997,24 @@ msgid "" "reference it\n" "- creation/update: a mandatory field is not correctly set" msgstr "" +"Operationen inte slutförd, troligen på grund av följande:\n" +"- radering: du försöker radera en post som andra poster fortfarande " +"refererar till\n" +"- skapa/uppdatering: ett obligatoriskt fält är inte ifyllt" #. module: base #: view:ir.rule:0 msgid "" "2. Group-specific rules are combined together with a logical AND operator" msgstr "" -"2. Gruppspecifika regler är kombinerade tillsammans med en logisk AND " -"operand" +"2. Gruppspecifika regler är kombinerade tillsammans med en logisk AND-" +"operator" #. module: base #: code:addons/base/res/res_user.py:206 #, python-format msgid "Operation Canceled" -msgstr "" +msgstr "Åtgärden avbruten" #. module: base #: help:base.language.export,lang:0 @@ -1034,7 +1039,7 @@ msgstr "Inköp" #. module: base #: model:res.country,name:base.md msgid "Moldavia" -msgstr "Moldavia" +msgstr "Moldavien" #. module: base #: view:ir.module.module:0 @@ -1069,7 +1074,7 @@ msgstr "Inget språk med koden %s existerar" #: code:addons/base/publisher_warranty/publisher_warranty.py:163 #, python-format msgid "Error during communication with the publisher warranty server." -msgstr "" +msgstr "Fel vid kommunikation med servern för 'publisher warranty'." #. module: base #: help:ir.actions.server,email:0 @@ -1078,14 +1083,14 @@ msgid "" "you select the invoice, then `object.invoice_address_id.email` is the field " "which gives the correct address" msgstr "" -"Visar vilka fält som skall användas för att hämta epostadresser. Exempel när " -"du väljer en faktura sä är `object.invoice_address_id.email` fältet som " -"visar rätt epostadress." +"Visar vilka fält som skall användas för att hämta e-postadresser. Exempel " +"när du väljer en faktura så är `object.invoice_address_id.email` fältet som " +"visar rätt e-postadress." #. module: base #: view:res.lang:0 msgid "%Y - Year with century." -msgstr "%Y - Är med århundrade" +msgstr "%Y - År med århundrade" #. module: base #: report:ir.module.reference.graph:0 @@ -1099,12 +1104,15 @@ msgid "" "system. After the contract has been registered, you will be able to send " "issues directly to OpenERP." msgstr "" +"Denna guide hjälper dig att registrera ett garantikontrakt från utgivaren i " +"ditt OpenERP-system. Sedan kontraktet registrerats kan du skicka ärenden " +"direkt till utgivaren." #. module: base #: code:addons/orm.py:1744 #, python-format msgid "The search method is not implemented on this object !" -msgstr "" +msgstr "Detta objekt har ingen metod för att söka!" #. module: base #: view:wizard.ir.model.menu.create:0 @@ -1139,7 +1147,7 @@ msgstr "" #. module: base #: field:ir.actions.report.xml,report_rml:0 msgid "Main report file path" -msgstr "" +msgstr "Huvudsökväg för rapporter" #. module: base #: model:ir.actions.act_window,name:base.ir_action_report_xml @@ -1155,6 +1163,8 @@ msgid "" "If set to true, the action will not be displayed on the right toolbar of a " "form view." msgstr "" +"Om sant, så kommer inte åtgärden att visas i verktygsfältet till höger i " +"formulärvyn." #. module: base #: field:workflow,on_create:0 @@ -1185,11 +1195,13 @@ msgid "" "Access all the fields related to the current object using expressions, i.e. " "object.partner_id.name " msgstr "" +"represenrerar ett blanksteg. Skriver in ett blanksteg i motsvarande position " +"i översättningen " #. module: base #: model:ir.model,name:base.model_res_country_state msgid "Country state" -msgstr "" +msgstr "Län/delstat" #. module: base #: selection:ir.property,type:0 @@ -1224,7 +1236,7 @@ msgstr "" #. module: base #: model:res.country,name:base.tp msgid "East Timor" -msgstr "East Timor" +msgstr "Östtimor" #. module: base #: model:res.company,follow_up_msg:base.main_company @@ -1243,6 +1255,15 @@ msgid "" "%(user_signature)s\n" "%(company_name)s" msgstr "" +"Datum : %(date)s\n" +"\n" +"%(partner_name),\n" +"\n" +"I bifogad bilaga listas obetalda fakturor med ett totalt belopp av\n" +"\n" +"%(followup_amount).2f %(company_currency)\n" +"\n" +"Med vänlig hälsning" #. module: base #: field:res.currency,accuracy:0 @@ -1272,7 +1293,7 @@ msgstr "Dagar: %(dag)ar" #. module: base #: model:res.country,name:base.mv msgid "Maldives" -msgstr "Maldives" +msgstr "Maldiverna" #. module: base #: help:ir.values,res_id:0 @@ -1295,6 +1316,8 @@ msgid "" "Condition that is to be tested before action is executed, e.g. " "object.list_price > object.cost_price" msgstr "" +"Villkor som skall testas innan en åtgärd vidtas, t ex object.list_price > " +"object.cost_price" #. module: base #: code:addons/base/res/partner/partner.py:155 @@ -1324,7 +1347,7 @@ msgstr "" #: model:ir.actions.act_window,name:base.res_widget_act_window #: model:ir.ui.menu,name:base.menu_res_widget_act_window msgid "Homepage Widgets" -msgstr "Hemside widgets" +msgstr "Hemside-widgets" #. module: base #: help:ir.actions.server,message:0 @@ -1332,7 +1355,7 @@ msgid "" "Specify the message. You can use the fields from the object. e.g. `Dear [[ " "object.partner_id.name ]]`" msgstr "" -"Definera meddelandet. Du kan används fält frpm objektet, t ex 'Bäste [[ " +"Definera meddelandet. Du kan använda fält från objektet, t ex 'Bäste [[ " "object.partner_id.name ]]'" #. module: base @@ -1381,7 +1404,7 @@ msgstr "Formel" #: code:addons/base/res/res_user.py:389 #, python-format msgid "Can not remove root user!" -msgstr "Kan inte ta bort root användare!" +msgstr "Kan inte ta bort root-användare." #. module: base #: model:res.country,name:base.mw @@ -1417,7 +1440,7 @@ msgid "" "decimal number [00,53]. All days in a new year preceding the first Sunday " "are considered to be in week 0." msgstr "" -"%U - Årets veckonummer (Söndag är första dagen i veckan) som decimaltal " +"%U - Årets veckonummer (söndag är första dagen i veckan) som decimaltal " "[00,53] Alla dagar som infaller före den första söndagen antas hamna i vecka " "0." @@ -1486,7 +1509,7 @@ msgstr "Loggar" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish / Español" -msgstr "Spanish / Español" +msgstr "Spanska / Español" #. module: base #: selection:base.language.install,lang:0 @@ -1499,6 +1522,8 @@ msgid "" "This wizard will scan all module repositories on the server side to detect " "newly added modules as well as any change to existing modules." msgstr "" +"Denna guide söker igenom alla modularkiv på servern och upptäcker nya " +"moduler liksom uppdateringar av befintliga moduler" #. module: base #: field:res.company,logo:0 @@ -1531,7 +1556,7 @@ msgstr "Bahamas" #, python-format msgid "" "Couldn't generate the next id because some partners have an alphabetic id !" -msgstr "Kan inte skapa nästa id eftersom partnern har ett alfanumeriskt id !" +msgstr "Kan inte skapa nästa id eftersom partnern har ett alfanumeriskt id." #. module: base #: view:ir.attachment:0 @@ -1541,7 +1566,7 @@ msgstr "Bilaga" #. module: base #: model:res.country,name:base.ie msgid "Ireland" -msgstr "Ireland" +msgstr "Irland" #. module: base #: field:base.module.update,update:0 @@ -1552,7 +1577,7 @@ msgstr "Antal uppdaterade moduler" #: code:addons/fields.py:100 #, python-format msgid "Not implemented set_memory method !" -msgstr "" +msgstr "Ej implementerad set_memory metod." #. module: base #: view:workflow.activity:0 @@ -1610,6 +1635,9 @@ msgid "" "access to selected functionalities within the system. Click on 'Done' if you " "do not wish to add more users at this stage, you can always do this later." msgstr "" +"Skapa ytterligare användare och tilldela grupper som ger dem åtkomst till " +"utvalda systemfunktioner. Klicka 'Klar' om du inte vill skapa fler " +"användare nu, det går bra att göra senare." #. module: base #: model:res.country,name:base.bz @@ -1619,12 +1647,12 @@ msgstr "Belize" #. module: base #: model:res.country,name:base.ge msgid "Georgia" -msgstr "Georgia" +msgstr "Georgien" #. module: base #: model:res.country,name:base.pl msgid "Poland" -msgstr "Poland" +msgstr "Polen" #. module: base #: help:ir.actions.act_window,view_mode:0 @@ -1632,14 +1660,14 @@ msgid "" "Comma-separated list of allowed view modes, such as 'form', 'tree', " "'calendar', etc. (Default: tree,form)" msgstr "" -"Komma-separerad list över godkända vymoderm som t ex 'form', 'tree', " +"Komma-separerad lista över godkända vymoder som t ex 'form', 'tree', " "'calendar', etc. (Standard: tree,form)" #. module: base #: code:addons/orm.py:3147 #, python-format msgid "A document was modified since you last viewed it (%s:%d)" -msgstr "" +msgstr "Ett dokument har modifierats sedan du sist såg det (%s:%d)." #. module: base #: view:workflow:0 @@ -1664,6 +1692,9 @@ msgid "" "order in Object, and you can have loop on the sales order line. Expression = " "`object.order_line`." msgstr "" +"Skriv in de fält/uttryck som returnernar listan. Välj t ex 'säljorder' i " +"'Object', och du kan loopa över säljordrar. Uttryck är av formen " +"object.order_line." #. module: base #: field:ir.property,fields_id:0 @@ -1680,7 +1711,7 @@ msgstr "Grupper (ingen grupp = global)" #. module: base #: model:res.country,name:base.fo msgid "Faroe Islands" -msgstr "Faroe Islands" +msgstr "Färöarna" #. module: base #: selection:res.config.users,view:0 @@ -1712,7 +1743,7 @@ msgstr "Barbados" #. module: base #: model:res.country,name:base.mg msgid "Madagascar" -msgstr "Madagascar" +msgstr "Madagaskar" #. module: base #: code:addons/base/ir/ir_model.py:96 @@ -1720,12 +1751,12 @@ msgstr "Madagascar" msgid "" "The Object name must start with x_ and not contain any special character !" msgstr "" -"Objektnamnet måste börja med x_ och får inte innehålla några specialtecken!" +"Objektnamnet måste börja med x_ och får inte innehålla några specialtecken." #. module: base #: field:ir.actions.configuration.wizard,note:0 msgid "Next Wizard" -msgstr "Nästa wizard" +msgstr "Nästa guide" #. module: base #: model:ir.actions.act_window,name:base.action_menu_admin @@ -1742,7 +1773,7 @@ msgstr "Aktuell kurs" #. module: base #: field:ir.ui.view.custom,ref_id:0 msgid "Original View" -msgstr "Orginalvy" +msgstr "Originalvy" #. module: base #: view:ir.values:0 @@ -1811,12 +1842,12 @@ msgstr "Serveraktivitet" #. module: base #: model:res.country,name:base.tt msgid "Trinidad and Tobago" -msgstr "Trinidad and Tobago" +msgstr "Trinidad och Tobago" #. module: base #: model:res.country,name:base.lv msgid "Latvia" -msgstr "Latvia" +msgstr "Lettland" #. module: base #: view:ir.values:0 @@ -1856,7 +1887,7 @@ msgstr "Destination" #. module: base #: model:res.country,name:base.lt msgid "Lithuania" -msgstr "Lithuania" +msgstr "Litauen" #. module: base #: model:ir.actions.act_window,name:base.action_view_partner_clear_ids @@ -1878,7 +1909,7 @@ msgstr "" #: code:addons/orm.py:1040 #, python-format msgid "The perm_read method is not implemented on this object !" -msgstr "" +msgstr "Metoden perm_read är inte implementerad på detta objekt" #. module: base #: view:res.lang:0 @@ -1899,7 +1930,7 @@ msgstr "Pakistan" #: code:addons/orm.py:1350 #, python-format msgid "Invalid Object Architecture!" -msgstr "" +msgstr "Ogiltig objektarkitektur" #. module: base #: model:ir.ui.menu,name:base.menu_email_gateway_form @@ -1916,7 +1947,7 @@ msgstr "Meddelanden" #: code:addons/base/module/wizard/base_update_translations.py:38 #, python-format msgid "Error!" -msgstr "Fel!" +msgstr "Fel" #. module: base #: view:res.lang:0 @@ -1926,7 +1957,7 @@ msgstr "%p - Lika med antingen FM eller EM," #. module: base #: view:ir.actions.server:0 msgid "Iteration Actions" -msgstr "Ternationshändelser" +msgstr "Upprepande händelser" #. module: base #: help:multi_company.default,company_id:0 @@ -1941,7 +1972,7 @@ msgstr "Slutdatum" #. module: base #: model:res.country,name:base.nz msgid "New Zealand" -msgstr "New Zealand" +msgstr "Nya Zeeland" #. module: base #: code:addons/orm.py:3366 @@ -1950,6 +1981,7 @@ msgid "" "One of the records you are trying to modify has already been deleted " "(Document type: %s)." msgstr "" +"En av de poster du försöker modifiera har tagits bort (Dokumenttyp: %s)." #. module: base #: model:ir.actions.act_window,help:base.action_country @@ -1970,7 +2002,7 @@ msgstr "Openstuff.net" #. module: base #: model:res.country,name:base.nf msgid "Norfolk Island" -msgstr "Norfolk Island" +msgstr "Norfolköarna" #. module: base #: selection:base.language.install,lang:0 @@ -1980,7 +2012,7 @@ msgstr "Koreanska (KR) / 한국어 (KR)" #. module: base #: help:ir.model.fields,model:0 msgid "The technical name of the model this field belongs to" -msgstr "" +msgstr "Tekniska namnet för den modell detta objekt tillhör." #. module: base #: field:ir.actions.server,action_id:0 @@ -2017,7 +2049,7 @@ msgstr "Kan inte uppgradera modulen \"%s\". Den är inte installerad." #. module: base #: model:res.country,name:base.cu msgid "Cuba" -msgstr "Cuba" +msgstr "Kuba" #. module: base #: model:ir.model,name:base.model_res_partner_event @@ -2032,7 +2064,7 @@ msgstr "Facebook" #. module: base #: model:res.country,name:base.am msgid "Armenia" -msgstr "Armenia" +msgstr "Armenien" #. module: base #: model:ir.actions.act_window,name:base.ir_property_form @@ -2098,7 +2130,7 @@ msgstr "Avbruten" #. module: base #: model:res.country,name:base.at msgid "Austria" -msgstr "Austria" +msgstr "Österrike" #. module: base #: selection:base.language.install,state:0 @@ -2118,7 +2150,7 @@ msgstr "Kalender" #. module: base #: field:res.partner.address,partner_id:0 msgid "Partner Name" -msgstr "Partner namn" +msgstr "Partnernamn" #. module: base #: field:workflow.activity,signal_send:0 @@ -2128,7 +2160,7 @@ msgstr "Signal (subflow.*)" #. module: base #: model:res.partner.category,name:base.res_partner_category_17 msgid "HR sector" -msgstr "Personalsektorn" +msgstr "Personalsektor" #. module: base #: code:addons/orm.py:3817 @@ -2138,6 +2170,8 @@ msgid "" "separated list of valid field names (optionally followed by asc/desc for the " "direction)" msgstr "" +"Ogilitig 'order' angiven. En korrekt 'order' består av en kommaseparerad " +"lista av fältnamn (som kan följas av asc/desc för att ange sortering)." #. module: base #: model:ir.model,name:base.model_ir_module_module_dependency @@ -2154,7 +2188,7 @@ msgstr "Utkast" #: selection:res.config.view,view:0 #: selection:res.users,view:0 msgid "Extended" -msgstr "Utökat" +msgstr "Utökad" #. module: base #: model:ir.actions.act_window,help:base.action_partner_title_contact @@ -2273,12 +2307,12 @@ msgstr "Prefix" #. module: base #: selection:base.language.install,lang:0 msgid "German / Deutsch" -msgstr "German / Deutsch" +msgstr "Tyska/Deutsch" #. module: base #: help:ir.actions.server,trigger_name:0 msgid "Select the Signal name that is to be used as the trigger." -msgstr "" +msgstr "Välj den signal som skall användas som trigger" #. module: base #: view:ir.actions.server:0 @@ -2299,7 +2333,7 @@ msgstr "Herr" #: code:addons/orm.py:1622 #, python-format msgid "There is no view of type '%s' defined for the structure!" -msgstr "" +msgstr "Det finns ingen vy av typ %s definierad för denna struktur." #. module: base #: field:ir.default,ref_id:0 @@ -2353,12 +2387,12 @@ msgstr "Instanser" #. module: base #: model:res.country,name:base.aq msgid "Antarctica" -msgstr "Antarctica" +msgstr "Antarktis" #. module: base #: field:ir.actions.report.xml,auto:0 msgid "Custom python parser" -msgstr "" +msgstr "Anpassad python-tolk" #. module: base #: view:base.language.import:0 @@ -2433,7 +2467,7 @@ msgstr "Kontrollera att alla rader har %d kolumner." #: view:ir.cron:0 #: model:ir.ui.menu,name:base.menu_ir_cron_act msgid "Scheduled Actions" -msgstr "Schemalagda årgärder" +msgstr "Schemalagda åtgärder" #. module: base #: field:res.partner.address,title:0 @@ -2451,13 +2485,13 @@ msgstr "" #: code:addons/orm.py:3448 #, python-format msgid "Recursivity Detected." -msgstr "" +msgstr "Rekursion upptäckt!" #. module: base #: code:addons/base/module/module.py:262 #, python-format msgid "Recursion error in modules dependencies !" -msgstr "" +msgstr "Rekursiva modulberoenden!" #. module: base #: view:base.language.install:0 @@ -2487,12 +2521,12 @@ msgstr "" #. module: base #: model:ir.model,name:base.model_maintenance_contract msgid "maintenance.contract" -msgstr "maintenance.contract" +msgstr "Underhållskontrakt" #. module: base #: model:res.country,name:base.ru msgid "Russian Federation" -msgstr "Russian Federation" +msgstr "Ryska federationen" #. module: base #: selection:base.language.install,lang:0 @@ -2513,7 +2547,7 @@ msgstr "Länder" #. module: base #: selection:ir.translation,type:0 msgid "RML (deprecated - use Report)" -msgstr "" +msgstr "RML (förkastat, använd Rapport)" #. module: base #: view:ir.rule:0 @@ -2534,7 +2568,7 @@ msgstr "Sökätgårder" #: model:ir.actions.act_window,name:base.action_view_partner_wizard_ean_check #: view:partner.wizard.ean.check:0 msgid "Ean check" -msgstr "Ean kontroll" +msgstr "EAN kontroll" #. module: base #: field:res.partner,vat:0 @@ -2554,7 +2588,7 @@ msgstr "Fel ! Du kan inte skapa rekursiva kategorier." #. module: base #: view:res.lang:0 msgid "%x - Appropriate date representation." -msgstr "" +msgstr "%x - tillämpligt datumformat" #. module: base #: view:res.lang:0 @@ -2564,7 +2598,7 @@ msgstr "%d - Dag i månad [01,31]" #. module: base #: model:res.country,name:base.tj msgid "Tajikistan" -msgstr "Tajikistan" +msgstr "Tadzjikistan" #. module: base #: selection:ir.module.module,license:0 @@ -2593,6 +2627,8 @@ msgid "" "Operation prohibited by access rules, or performed on an already deleted " "document (Operation: read, Document type: %s)." msgstr "" +"Åtgärden förbjuden av åtkomstregler, eller utförd på ett redan borttaget " +"dokument (åtgärd: läs, dokumenttyp: %s)." #. module: base #: model:res.country,name:base.nr @@ -2655,7 +2691,7 @@ msgstr "Kommer att uppgraderas" #. module: base #: model:res.country,name:base.ly msgid "Libya" -msgstr "Libya" +msgstr "Libyen" #. module: base #: model:res.country,name:base.cf @@ -2682,7 +2718,7 @@ msgstr "EAN13" #: code:addons/orm.py:1622 #, python-format msgid "Invalid Architecture!" -msgstr "" +msgstr "Ogiltitg arkitektur" #. module: base #: model:res.country,name:base.pt @@ -2693,7 +2729,7 @@ msgstr "Portugal" #: sql_constraint:ir.model.data:0 msgid "" "You cannot have multiple records with the same id for the same module !" -msgstr "" +msgstr "Du kan in ha flera poster med samma id i samma modul!" #. module: base #: field:ir.module.module,certificate:0 @@ -2709,7 +2745,7 @@ msgstr "6. %d, %m ==> 05, 12" #: field:res.config.users,date:0 #: field:res.users,date:0 msgid "Last Connection" -msgstr "" +msgstr "Sista anslutning" #. module: base #: field:ir.actions.act_window,help:0 @@ -2763,7 +2799,7 @@ msgstr "Kunder" #. module: base #: model:res.country,name:base.au msgid "Australia" -msgstr "Australia" +msgstr "Australien" #. module: base #: help:res.partner,lang:0 @@ -2809,13 +2845,14 @@ msgstr "Guide" #. module: base #: view:ir.cron:0 msgid "Action to Trigger" -msgstr "" +msgstr "Triggad åtgärd" #. module: base #: code:addons/base/res/res_user.py:136 #, python-format msgid "\"email_from\" needs to be set to send welcome mails to users" msgstr "" +"'email_from' måste sättas för att skicka välkomstebrev till användare" #. module: base #: selection:ir.translation,type:0 @@ -2874,7 +2911,7 @@ msgstr "" #. module: base #: model:res.country,name:base.va msgid "Holy See (Vatican City State)" -msgstr "" +msgstr "Vatikanstaten" #. module: base #: field:base.module.import,module_file:0 @@ -2910,7 +2947,7 @@ msgstr "Inkommande transaktioner" #. module: base #: model:res.country,name:base.sr msgid "Suriname" -msgstr "Suriname" +msgstr "Surinam" #. module: base #: model:ir.ui.menu,name:base.marketing_menu @@ -2956,7 +2993,7 @@ msgstr "Alltid" #. module: base #: selection:ir.translation,type:0 msgid "SQL Constraint" -msgstr "" +msgstr "SQL-villkor" #. module: base #: field:ir.actions.server,srcmodel_id:0 @@ -2970,7 +3007,7 @@ msgid "" "The selected language has been successfully installed. You must change the " "preferences of the user and open a new menu to view the changes." msgstr "" -"Språket du valde jhar installerats, Du kan ändra egenskaperna av användaren " +"Språket du valde har installerats. Du kan ändra egenskaperna av användaren " "och öppna en meny för att se ändringarna." #. module: base @@ -2986,7 +3023,7 @@ msgstr "öppna ett fönster" #. module: base #: model:res.country,name:base.gq msgid "Equatorial Guinea" -msgstr "Equatorial Guinea" +msgstr "Ekvatorialguinea" #. module: base #: view:base.module.import:0 @@ -2999,7 +3036,7 @@ msgstr "Modulimport" #: field:res.partner.address,zip:0 #: field:res.partner.bank,zip:0 msgid "Zip" -msgstr "Zip" +msgstr "Postnummer" #. module: base #: view:ir.module.module:0 @@ -3015,7 +3052,7 @@ msgstr "FYROM" #. module: base #: view:res.lang:0 msgid "%c - Appropriate date and time representation." -msgstr "" +msgstr "Tillämplig datum- och tidrepresentation" #. module: base #: code:addons/base/res/res_config.py:422 @@ -3177,7 +3214,7 @@ msgstr "Systemkonfigureringen är klar" #: code:addons/orm.py:929 #, python-format msgid "Error occurred while validating the field(s) %s: %s" -msgstr "" +msgstr "Fel vid fältvalidering %s: %s" #. module: base #: view:ir.property:0 @@ -3192,7 +3229,7 @@ msgstr "San Marino" #. module: base #: model:res.country,name:base.bm msgid "Bermuda" -msgstr "Bermuda" +msgstr "Bermudasöarna" #. module: base #: model:res.country,name:base.pe @@ -3247,6 +3284,8 @@ msgid "" "You can not create this document (%s) ! Be sure your user belongs to one of " "these groups: %s." msgstr "" +"Du kan inte skapa detta dokument (%s). Kontrollera att din användare ingår i " +"dessa grupper: %s" #. module: base #: model:res.country,name:base.mu @@ -3276,7 +3315,7 @@ msgstr "OpenERP favoriter" #. module: base #: model:res.country,name:base.za msgid "South Africa" -msgstr "South Africa" +msgstr "Sydafrika" #. module: base #: view:ir.module.module:0 @@ -3304,7 +3343,7 @@ msgstr "Senegal" #. module: base #: model:res.country,name:base.hu msgid "Hungary" -msgstr "Hungary" +msgstr "Ungern" #. module: base #: model:ir.model,name:base.model_res_groups @@ -3314,7 +3353,7 @@ msgstr "res.groups" #. module: base #: model:res.country,name:base.br msgid "Brazil" -msgstr "Brazil" +msgstr "Brasilien" #. module: base #: view:res.lang:0 @@ -3324,7 +3363,7 @@ msgstr "%M - Minut [00,59]" #. module: base #: selection:ir.module.module,license:0 msgid "Affero GPL-3" -msgstr "" +msgstr "Affero GPL-3" #. module: base #: field:ir.sequence,number_next:0 @@ -3334,7 +3373,7 @@ msgstr "Nästa nummer" #. module: base #: help:workflow.transition,condition:0 msgid "Expression to be satisfied if we want the transition done." -msgstr "" +msgstr "Villkor som skall vara uppfyllt för att göra övergången" #. module: base #: selection:base.language.install,lang:0 @@ -3350,7 +3389,7 @@ msgstr "Kurser" #. module: base #: model:res.country,name:base.sy msgid "Syria" -msgstr "Syria" +msgstr "Syrien" #. module: base #: view:res.lang:0 @@ -3412,7 +3451,7 @@ msgstr "" #: code:addons/base/ir/ir_model.py:319 #, python-format msgid "Cannot rename column to %s, because that column already exists!" -msgstr "" +msgstr "Kan inte byta kolumnnamn till %s, kolumnen finns redan!" #. module: base #: view:ir.attachment:0 @@ -3422,7 +3461,7 @@ msgstr "Bifogad till" #. module: base #: field:res.lang,decimal_point:0 msgid "Decimal Separator" -msgstr "Decimal separator" +msgstr "Decimalseparator" #. module: base #: model:ir.actions.act_window,help:base.action_res_groups @@ -3434,6 +3473,11 @@ msgid "" "to see. Whether they can have a read, write, create and delete access right " "can be managed from here." msgstr "" +"En grupp är en mängd rättigheter som tilldelas en användare som gör det " +"möjligt att utföra specifika applikationer och uppgifter. Du kan skapa " +"anpassade grupper, eller redigare de befintliga för att anpassa den meny " +"användare ser. Deras möjilgheter att läsa, skriva, skapa och ta bort kan " +"hanteras här" #. module: base #: view:res.partner:0 @@ -3457,6 +3501,12 @@ msgid "" "Would your payment have been carried out after this mail was sent, please " "consider the present one as void." msgstr "" +"Notera att följande betalningar är förfallna. Om er betalning har skckats, " +"vänligen skicka betalningsinformation. Om er betalning blir ytterligare " +"fördröjd, kontakta oss för vidare diskussion.\n" +"\n" +"Om er betalning skickats efter det att detta e-brev sändes, vänligen bortse " +"från detta meddelande." #. module: base #: model:res.country,name:base.mx @@ -3487,7 +3537,7 @@ msgstr "Nicaragua" #: code:addons/orm.py:1046 #, python-format msgid "The write method is not implemented on this object !" -msgstr "" +msgstr "Metoden write är inte implementerad på denna post." #. module: base #: view:res.partner.event:0 @@ -3503,7 +3553,7 @@ msgstr "Konfigurera ditt användargränssnitt" #. module: base #: field:ir.values,meta:0 msgid "Meta Datas" -msgstr "Meta Datas" +msgstr "Metadata" #. module: base #: sql_constraint:ir.ui.view_sc:0 @@ -3531,11 +3581,13 @@ msgid "" "The internal user that is in charge of communicating with this partner if " "any." msgstr "" +"Den interna användare som hanterar kommunikationen med denna partner, om " +"sådan finns." #. module: base #: field:res.partner,parent_id:0 msgid "Parent Partner" -msgstr "" +msgstr "Överliggande partner" #. module: base #: view:ir.module.module:0 @@ -3545,12 +3597,12 @@ msgstr "Avbryt uppgradering" #. module: base #: model:res.country,name:base.ci msgid "Ivory Coast (Cote D'Ivoire)" -msgstr "Ivory Coast (Cote D'Ivoire)" +msgstr "Elfenbenskusten" #. module: base #: model:res.country,name:base.kz msgid "Kazakhstan" -msgstr "Kazakhstan" +msgstr "Kazakstan" #. module: base #: view:res.lang:0 @@ -3568,6 +3620,12 @@ msgid "" "plugin, don't forget to register emails to each contact so that the gateway " "will automatically attach incoming emails to the right partner." msgstr "" +"En kund är någon du gör affärer med, ett företag eller en organisation. En " +"kund kan ha flera kontakter eller adresser för de personer som arbetar där. " +"Du kan använda historiefliken för att följa alla transaktioner relaterade " +"till en viss kund: säljordrar, e-post, offerter, krav etc. Om du använder " +"epostbryggan, eller Thunderbird-plugin, glöm inte att registrera så att " +"inkommande epost hamnar hos rätt kund," #. module: base #: field:ir.actions.report.xml,name:0 @@ -3689,17 +3747,17 @@ msgstr "publisher_warranty.contract" #. module: base #: model:res.country,name:base.et msgid "Ethiopia" -msgstr "Ethiopia" +msgstr "Etiopien" #. module: base #: help:res.country.state,code:0 msgid "The state code in three chars.\n" -msgstr "" +msgstr "Landskod, tre tecken\n" #. module: base #: model:res.country,name:base.sj msgid "Svalbard and Jan Mayen Islands" -msgstr "Svalbard and Jan Mayen Islands" +msgstr "Svalbard och Jan Mayen-öarna" #. module: base #: model:ir.model,name:base.model_ir_actions_wizard @@ -3777,7 +3835,7 @@ msgstr "Spanska (BO) / Español (BO" #: model:ir.actions.act_window,name:base.ir_access_act #: model:ir.ui.menu,name:base.menu_ir_access_act msgid "Access Controls List" -msgstr "" +msgstr "Åtkomstkontrollista" #. module: base #: model:res.country,name:base.um @@ -3811,19 +3869,19 @@ msgstr "Startdatum" #. module: base #: selection:base.language.install,lang:0 msgid "Gujarati / ગુજરાતી" -msgstr "" +msgstr "Gujarati" #. module: base #: code:addons/base/module/module.py:257 #, python-format msgid "" "Unable to process module \"%s\" because an external dependency is not met: %s" -msgstr "" +msgstr "Kan inte bearbeta modul \"%s\", ett externt beroende saknas: %s" #. module: base #: view:publisher_warranty.contract.wizard:0 msgid "Please enter the serial key provided in your contract document:" -msgstr "" +msgstr "ANge serienumret i ditt underhållskontrakt" #. module: base #: view:workflow.activity:0 @@ -3835,7 +3893,7 @@ msgstr "" #: code:addons/__init__.py:834 #, python-format msgid "module base cannot be loaded! (hint: verify addons-path)" -msgstr "" +msgstr "Det går inte att ladda modulen (hint: konmtrollera addons-path)." #. module: base #: view:res.partner.bank:0 @@ -3937,6 +3995,8 @@ msgid "" "Whether values for this field can be translated (enables the translation " "mechanism for that field)" msgstr "" +"Anger om värden i detta fält kan översättas (slår på översättningsmekanismen " +"för detta fält)." #. module: base #: view:res.lang:0 @@ -3970,13 +4030,13 @@ msgstr "ir.actions.url" #. module: base #: model:res.widget,title:base.currency_converter_widget msgid "Currency Converter" -msgstr "" +msgstr "Valutakonverterare" #. module: base #: code:addons/orm.py:156 #, python-format msgid "Wrong ID for the browse record, got %r, expected an integer." -msgstr "" +msgstr "Felaktigt ID för den listade posten, fick %r, väntade ett heltal." #. module: base #: model:ir.actions.act_window,name:base.action_partner_addess_tree @@ -3992,7 +4052,7 @@ msgstr "Antal tillagda moduler" #. module: base #: view:res.currency:0 msgid "Price Accuracy" -msgstr "" +msgstr "Prisnoggranhet" #. module: base #: selection:base.language.install,lang:0 @@ -4008,13 +4068,13 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "French / Français" -msgstr "French / Français" +msgstr "Franska/Français" #. module: base #: code:addons/orm.py:1049 #, python-format msgid "The create method is not implemented on this object !" -msgstr "" +msgstr "Metoden 'create' är ej implementerad för denna post." #. module: base #: field:workflow.triggers,workitem_id:0 @@ -4024,7 +4084,7 @@ msgstr "Arbetsmaterial" #. module: base #: view:ir.actions.todo:0 msgid "Set as Todo" -msgstr "Sätt till att göra" +msgstr "" #. module: base #: field:ir.actions.act_window.view,act_window_id:0 @@ -4085,7 +4145,7 @@ msgstr "Sudan" #. module: base #: model:res.country,name:base.fm msgid "Micronesia" -msgstr "Micronesia" +msgstr "Mikronesien" #. module: base #: view:res.request.history:0 @@ -4152,7 +4212,7 @@ msgstr "Moduler" #: field:workflow.activity,subflow_id:0 #: field:workflow.workitem,subflow_id:0 msgid "Subflow" -msgstr "" +msgstr "Underordnat föde" #. module: base #: model:ir.model,name:base.model_res_config @@ -4180,12 +4240,12 @@ msgstr "Olästa" #. module: base #: field:ir.cron,doall:0 msgid "Repeat Missed" -msgstr "" +msgstr "Gör om missade" #. module: base #: help:ir.actions.server,state:0 msgid "Type of the Action that is to be executed" -msgstr "" +msgstr "Typ av åtgärd som skall genomföras" #. module: base #: field:ir.server.object.lines,server_id:0 @@ -4201,7 +4261,7 @@ msgstr "" #. module: base #: model:res.country,name:base.uk msgid "United Kingdom" -msgstr "United Kingdom" +msgstr "Storbritannien" #. module: base #: view:res.config:0 @@ -4236,7 +4296,7 @@ msgstr "Partnertitlar" #. module: base #: help:ir.actions.act_window,auto_refresh:0 msgid "Add an auto-refresh on the view" -msgstr "" +msgstr "Lägg till autouppdatering till vyn." #. module: base #: help:res.partner,employee:0 @@ -4272,6 +4332,8 @@ msgid "" "You cannot perform this operation. New Record Creation is not allowed for " "this object as this object is for reporting purpose." msgstr "" +"Du kan inte genomföra denna åtgärd, det är inte tillåtet att skapa en ny " +"post för detta objekt eftersom det används för rapportändamål." #. module: base #: view:base.language.import:0 @@ -4281,7 +4343,7 @@ msgstr "- module,type,name,res_id,src,value" #. module: base #: selection:base.language.install,lang:0 msgid "Lithuanian / Lietuvių kalba" -msgstr "Lithuanian / Lietuvių kalba" +msgstr "Litausiska/ Lietuvių kalba" #. module: base #: help:ir.actions.server,record_id:0 @@ -4289,11 +4351,13 @@ msgid "" "Provide the field name where the record id is stored after the create " "operations. If it is empty, you can not track the new record." msgstr "" +"Ange fältnamnet där id för den skapade posten sparas. Om detta är tomt kan " +"du inte spåra den nya posten." #. module: base #: help:ir.model.fields,relation:0 msgid "For relationship fields, the technical name of the target model" -msgstr "" +msgstr "För fät som anger relationer, det tekniska namet får målmodellen." #. module: base #: selection:base.language.install,lang:0 @@ -4379,7 +4443,7 @@ msgstr "Anställd" #. module: base #: field:ir.model.access,perm_create:0 msgid "Create Access" -msgstr "" +msgstr "Skapa åtkomst" #. module: base #: field:res.partner.address,state_id:0 @@ -4404,7 +4468,7 @@ msgstr "Rensa id'n" #. module: base #: model:res.country,name:base.io msgid "British Indian Ocean Territory" -msgstr "British Indian Ocean Territory" +msgstr "Brittiskt territorium i Indiska Oceanen" #. module: base #: field:res.config.users,view:0 @@ -4421,7 +4485,7 @@ msgstr "Fältmappning" #. module: base #: view:publisher_warranty.contract:0 msgid "Refresh Validation Dates" -msgstr "" +msgstr "Uppdatera valideringsdatum" #. module: base #: view:ir.model:0 @@ -4472,7 +4536,7 @@ msgstr "Signatur" #: code:addons/fields.py:664 #, python-format msgid "Not Implemented" -msgstr "" +msgstr "Inte implementerad" #. module: base #: model:ir.model,name:base.model_res_widget_user @@ -4540,7 +4604,7 @@ msgstr "Kontakter" #, python-format msgid "" "Unable to delete this document because it is used as a default property" -msgstr "" +msgstr "Kan inte ta bort detta dokument, det används som standardvärde." #. module: base #: view:res.widget.wizard:0 @@ -4552,7 +4616,7 @@ msgstr "lägg till" #: model:ir.actions.act_window,name:base.action_view_base_module_upgrade_window #: model:ir.ui.menu,name:base.menu_view_base_module_upgrade msgid "Apply Scheduled Upgrades" -msgstr "Applicera planerade uppgraderingar" +msgstr "Inför uppgraderingar" #. module: base #: view:res.widget:0 @@ -4562,7 +4626,7 @@ msgstr "Widgets" #. module: base #: model:res.country,name:base.cz msgid "Czech Republic" -msgstr "Czech Republic" +msgstr "Tjeckien" #. module: base #: view:res.widget.wizard:0 @@ -4576,6 +4640,9 @@ msgid "" "OpenERP. They are launched during the installation of new modules, but you " "can choose to restart some wizards manually from this menu." msgstr "" +"Konfigurationsguiderna hjälper dig att konfigurera en ny OpenEREP-instans. " +"De startas under modulinstallationer, men du kan återstarta vissa guider " +"från denna meny." #. module: base #: code:addons/base/res/res_user.py:206 @@ -4583,13 +4650,13 @@ msgstr "" msgid "" "Please use the change password wizard (in User Preferences or User menu) to " "change your own password." -msgstr "" +msgstr "Använd guiden Ändra Lösenord ( i menyn Användare)." #. module: base #: code:addons/orm.py:1350 #, python-format msgid "Insufficient fields for Calendar View!" -msgstr "" +msgstr "Otillräckliga fält för kalendervy!" #. module: base #: selection:ir.property,type:0 @@ -4624,7 +4691,7 @@ msgstr "Övergång" #. module: base #: field:res.groups,menu_access:0 msgid "Access Menu" -msgstr "" +msgstr "Åtkomstmeny" #. module: base #: model:res.country,name:base.na @@ -4634,7 +4701,7 @@ msgstr "Namibia" #. module: base #: model:res.country,name:base.mn msgid "Mongolia" -msgstr "Mongolia" +msgstr "Mongoliet" #. module: base #: view:ir.module.module:0 @@ -4744,7 +4811,7 @@ msgstr "Arbetsflöde arbetsmaterial" #. module: base #: model:res.country,name:base.vc msgid "Saint Vincent & Grenadines" -msgstr "Saint Vincent & Grenadines" +msgstr "Saint Vincent & Grenadinerna" #. module: base #: field:partner.sms.send,password:0 @@ -4773,6 +4840,7 @@ msgstr "Anställda" msgid "" "If this log item has been read, get() should not send it to the client" msgstr "" +"Om denna loggpost har lästs skall get() inte skicka den till klienten." #. module: base #: field:res.company,rml_header2:0 @@ -4797,6 +4865,9 @@ msgid "" "channels that will be maintained at the creation of a document in the " "system. Some examples of channels can be: Website, Phone Call, Reseller, etc." msgstr "" +"Spåra här var dina lead och möjligheter kommer ifrån genom att skapa kanaler " +"som används när dokument skapas i systemet. Exempel på kanaler kan vara " +"webbplats, telefonsamtal, återförsäljare etc." #. module: base #: model:res.partner.bank.type.field,name:base.bank_normal_field @@ -4829,7 +4900,7 @@ msgstr "Gata" #. module: base #: model:res.country,name:base.yu msgid "Yugoslavia" -msgstr "Yugoslavia" +msgstr "Jugoslavien" #. module: base #: field:ir.model.data,name:0 @@ -4839,7 +4910,7 @@ msgstr "XML identifierare" #. module: base #: model:res.country,name:base.ca msgid "Canada" -msgstr "Canada" +msgstr "Kanada" #. module: base #: selection:ir.module.module.dependency,state:0 @@ -4849,7 +4920,7 @@ msgstr "Okänd" #. module: base #: model:ir.actions.act_window,name:base.action_res_users_my msgid "Change My Preferences" -msgstr "Ändra min inställningar" +msgstr "Ändra mina inställningar" #. module: base #: code:addons/base/ir/ir_actions.py:164 @@ -4865,7 +4936,7 @@ msgstr "SMS meddelande" #. module: base #: model:res.country,name:base.cm msgid "Cameroon" -msgstr "Cameroon" +msgstr "Kamerun" #. module: base #: model:res.country,name:base.bf @@ -4885,19 +4956,19 @@ msgstr "Anpassade fält" #. module: base #: field:ir.module.module,web:0 msgid "Has a web component" -msgstr "Har en webkomponent" +msgstr "Har en webbkomponent" #. module: base #: model:res.country,name:base.cc msgid "Cocos (Keeling) Islands" -msgstr "" +msgstr "Kokosöarna" #. module: base #: selection:base.language.install,state:0 #: selection:base.module.import,state:0 #: selection:base.module.update,state:0 msgid "init" -msgstr "" +msgstr "init" #. module: base #: view:res.lang:0 @@ -4912,7 +4983,7 @@ msgstr "Banktyp fält" #. module: base #: selection:base.language.install,lang:0 msgid "Dutch / Nederlands" -msgstr "Dutch / Nederlands" +msgstr "Holland / Nederländerna" #. module: base #: code:addons/base/res/res_config.py:384 @@ -4955,7 +5026,7 @@ msgstr "Suffix" #. module: base #: model:res.country,name:base.mo msgid "Macau" -msgstr "Macau" +msgstr "Macao" #. module: base #: model:ir.actions.report.xml,name:base.res_partner_address_report @@ -4989,6 +5060,8 @@ msgid "" "If specified, this action will be opened at logon for this user, in addition " "to the standard menu." msgstr "" +"Om angiven så genomförs denna åtgärd när användaren loggar in, förutom " +"standardmenyn." #. module: base #: view:ir.values:0 @@ -4999,7 +5072,7 @@ msgstr "Klientåtgärder" #: code:addons/orm.py:1806 #, python-format msgid "The exists method is not implemented on this object !" -msgstr "" +msgstr "Metoden exists är inte implementerad på detta objekt." #. module: base #: code:addons/base/module/module.py:336 @@ -5008,11 +5081,13 @@ msgid "" "You try to upgrade a module that depends on the module: %s.\n" "But this module is not available in your system." msgstr "" +"Du försöker uppgradera en modul som beror av modulen: %s.\n" +"Men denna modul är inte tillgänglig i ditt system" #. module: base #: field:workflow.transition,act_to:0 msgid "Destination Activity" -msgstr "" +msgstr "Destinationsaktivitet" #. module: base #: view:ir.values:0 @@ -5050,7 +5125,7 @@ msgstr "ir.ui.menu" #. module: base #: model:res.country,name:base.us msgid "United States" -msgstr "United States" +msgstr "USA" #. module: base #: view:ir.module.module:0 @@ -5097,6 +5172,9 @@ msgid "" "Keep empty to not save the printed reports. You can use a python expression " "with the object and time variables." msgstr "" +"Filnamnet för den bilaga som innehåller utskriften. Sätt till tom för att " +"inte spara utskrifter. Man kan använda pythonuttryck med objekten object och " +"time." #. module: base #: selection:ir.property,type:0 @@ -5176,7 +5254,7 @@ msgstr "Filippinerna" #. module: base #: model:res.country,name:base.ma msgid "Morocco" -msgstr "Morocco" +msgstr "Marocko" #. module: base #: view:res.lang:0 @@ -5196,7 +5274,7 @@ msgstr "Om du ingen grupp anges gäller regeln för alla" #. module: base #: model:res.country,name:base.td msgid "Chad" -msgstr "" +msgstr "Tchad" #. module: base #: model:ir.model,name:base.model_workflow_transition @@ -5221,13 +5299,13 @@ msgstr "Polynesia (French)" #. module: base #: model:res.country,name:base.dm msgid "Dominica" -msgstr "Dominica" +msgstr "Dominikanska republiken" #. module: base #: sql_constraint:publisher_warranty.contract:0 msgid "" "Your publisher warranty contract is already subscribed in the system !" -msgstr "" +msgstr "Utgivarens underhållskontrakt är redan registrerat." #. module: base #: help:ir.cron,nextcall:0 @@ -5271,7 +5349,7 @@ msgstr "" #: model:ir.ui.menu,name:base.menu_action_ui_view_custom #: view:ir.ui.view.custom:0 msgid "Customized Views" -msgstr "" +msgstr "Anpassade vyer" #. module: base #: view:partner.sms.send:0 @@ -5321,7 +5399,7 @@ msgstr "Thailändska / ภาษาไทย" #: code:addons/orm.py:158 #, python-format msgid "Object %s does not exists" -msgstr "" +msgstr "Posten %s existerar inte" #. module: base #: selection:base.language.install,lang:0 @@ -5336,7 +5414,7 @@ msgstr "Ladda om från bilagan" #. module: base #: model:res.country,name:base.bv msgid "Bouvet Island" -msgstr "Bouvet Island" +msgstr "Bouvetön" #. module: base #: field:ir.attachment,name:0 @@ -5357,7 +5435,7 @@ msgstr "Lägg till användare" #. module: base #: model:ir.actions.act_window,name:base.action_view_base_module_upgrade_install msgid "Module Upgrade Install" -msgstr "Modul uppgradering installering" +msgstr "Moduluppgradering" #. module: base #: model:ir.model,name:base.model_ir_actions_configuration_wizard @@ -5414,7 +5492,7 @@ msgstr "Importera modulen" #. module: base #: model:res.country,name:base.as msgid "American Samoa" -msgstr "American Samoa" +msgstr "Amerikanska Samoa" #. module: base #: help:ir.actions.act_window,res_model:0 @@ -5463,7 +5541,7 @@ msgstr "Användarfel" #. module: base #: model:res.country,name:base.ae msgid "United Arab Emirates" -msgstr "United Arab Emirates" +msgstr "Förenade Arabemiraten" #. module: base #: model:ir.ui.menu,name:base.menu_crm_case_job_req_main @@ -5481,6 +5559,7 @@ msgstr "" msgid "" "New column name must still start with x_ , because it is a custom field!" msgstr "" +"Namnet på den nya kolumnen måste ändå börja med x_, det är ett anpassat fält." #. module: base #: view:ir.model.access:0 @@ -5492,7 +5571,7 @@ msgstr "Global" #. module: base #: model:res.country,name:base.mp msgid "Northern Mariana Islands" -msgstr "Northern Mariana Islands" +msgstr "Norra Marianeröarna" #. module: base #: model:res.country,name:base.sb @@ -5530,7 +5609,7 @@ msgstr "8. %I:%M:%S %p ==> 06:25:20 PM" #: code:addons/orm.py:1803 #, python-format msgid "The copy method is not implemented on this object !" -msgstr "" +msgstr "Metoden copy är inte implementerad för detta objekt." #. module: base #: field:res.log,create_date:0 @@ -5546,7 +5625,7 @@ msgstr "Översättningar" #. module: base #: field:ir.sequence,padding:0 msgid "Number padding" -msgstr "Numeriskt format" +msgstr "Numerisk utfyllnad" #. module: base #: view:ir.actions.report.xml:0 @@ -5556,7 +5635,7 @@ msgstr "Rapport" #. module: base #: model:res.country,name:base.ua msgid "Ukraine" -msgstr "Ukraine" +msgstr "Ukraina" #. module: base #: model:res.country,name:base.to @@ -5577,7 +5656,7 @@ msgstr "Ignorera" #. module: base #: report:ir.module.reference.graph:0 msgid "Reference Guide" -msgstr "Referens guide" +msgstr "Referensguide" #. module: base #: view:ir.ui.view:0 @@ -5631,7 +5710,7 @@ msgstr "Brunei Darussalam" #: field:ir.ui.view,type:0 #: field:wizard.ir.model.menu.create.line,view_type:0 msgid "View Type" -msgstr "Vy typ" +msgstr "Typ av vy" #. module: base #: model:ir.ui.menu,name:base.next_id_2 @@ -5677,7 +5756,7 @@ msgstr "Algeriet" #. module: base #: model:res.country,name:base.be msgid "Belgium" -msgstr "Belgium" +msgstr "Belgien" #. module: base #: model:ir.model,name:base.model_osv_memory_autovacuum @@ -5756,7 +5835,7 @@ msgstr "Kan inte skapa modulfilen: %s !" #. module: base #: model:ir.module.module,description:base.module_meta_information msgid "The kernel of OpenERP, needed for all installation." -msgstr "OpenERP's kärna, behövs för alla installationer" +msgstr "OpenERP's kärna, behövs för alla installationer." #. module: base #: view:base.language.install:0 @@ -5780,7 +5859,7 @@ msgstr "PO fil" #. module: base #: model:res.country,name:base.nt msgid "Neutral Zone" -msgstr "Neutral Zone" +msgstr "Neutral Zon" #. module: base #: selection:base.language.install,lang:0 @@ -5821,7 +5900,7 @@ msgstr "Publicerad version" #. module: base #: model:res.country,name:base.is msgid "Iceland" -msgstr "Iceland" +msgstr "Island" #. module: base #: model:ir.actions.act_window,name:base.ir_action_window @@ -5842,7 +5921,7 @@ msgstr "Avslutad" #. module: base #: model:res.country,name:base.de msgid "Germany" -msgstr "Germany" +msgstr "Tyskland" #. module: base #: view:ir.sequence:0 @@ -5900,7 +5979,7 @@ msgstr "" #. module: base #: model:res.country,name:base.eg msgid "Egypt" -msgstr "Egypt" +msgstr "Egypten" #. module: base #: field:ir.rule,perm_read:0 @@ -5911,7 +5990,7 @@ msgstr "" #: help:ir.actions.server,model_id:0 msgid "" "Select the object on which the action will work (read, write, create)." -msgstr "" +msgstr "Markera objektet som skall genomföra åtgärden (läsa, skriva, skapa)" #. module: base #: code:addons/base/ir/ir_actions.py:629 @@ -5922,7 +6001,7 @@ msgstr "" #. module: base #: field:base.language.import,name:0 msgid "Language Name" -msgstr "Språk namnet" +msgstr "Språknamnet" #. module: base #: selection:ir.property,type:0 @@ -5963,13 +6042,13 @@ msgstr "Skrivskyddad" #: selection:ir.translation,type:0 #: field:wizard.ir.model.menu.create.line,view_id:0 msgid "View" -msgstr "Visa" +msgstr "Vy" #. module: base #: selection:ir.module.module,state:0 #: selection:ir.module.module.dependency,state:0 msgid "To be installed" -msgstr "Att installeras" +msgstr "Kommer att installeras" #. module: base #: help:ir.actions.act_window,display_menu_tip:0 @@ -6085,6 +6164,8 @@ msgid "" "All pending configuration wizards have been executed. You may restart " "individual wizards via the list of configuration wizards." msgstr "" +"Alla köade guider är klara. Du kan återstarta individuella guider via listan " +"på konfigurationsguider." #. module: base #: wizard_button:server.action.create,step_1,create:0 @@ -6159,7 +6240,7 @@ msgstr "Sort" #: code:addons/orm.py:3775 #, python-format msgid "This method does not exist anymore" -msgstr "" +msgstr "Denan metod existerar inte längre" #. module: base #: field:res.bank,fax:0 @@ -6183,6 +6264,7 @@ msgid "" "Select the action that will be executed. Loop action will not be avaliable " "inside loop." msgstr "" +"Välj åtgärd som skall genomföras. Loop-åtgärd är inte tillgänglig i en loop." #. module: base #: selection:base.language.install,lang:0 @@ -6224,6 +6306,8 @@ msgstr "AB" msgid "" "The group that a user must have to be authorized to validate this transition." msgstr "" +"Den grupp användaren skall tillhöra för att vara behörig att göra denna " +"övergång." #. module: base #: constraint:res.config.users:0 @@ -6245,7 +6329,7 @@ msgstr "Tjänstenamn" #. module: base #: model:res.country,name:base.pn msgid "Pitcairn Island" -msgstr "" +msgstr "Pitcairn" #. module: base #: view:base.module.upgrade:0 @@ -6367,7 +6451,7 @@ msgstr "Qatar" #. module: base #: model:res.country,name:base.it msgid "Italy" -msgstr "Italy" +msgstr "Italien" #. module: base #: view:ir.actions.todo:0 @@ -6378,14 +6462,14 @@ msgstr "Att göra" #. module: base #: selection:base.language.install,lang:0 msgid "Estonian / Eesti keel" -msgstr "Estonian / Eesti keel" +msgstr "Estniska / Eesti keel" #. module: base #: field:res.config.users,email:0 #: field:res.partner,email:0 #: field:res.users,email:0 msgid "E-mail" -msgstr "Epost" +msgstr "E-post" #. module: base #: selection:ir.module.module,license:0 @@ -6415,11 +6499,14 @@ msgid "" "Manage the partner titles you want to have available in your system. The " "partner titles is the legal status of the company: Private Limited, SA, etc." msgstr "" +"Hantera titlarna på systemets partner, som avspeglar deras legala status: " +"AB, kommun, stiftelse etc." #. module: base #: view:base.language.export:0 msgid "To browse official translations, you can start with these links:" msgstr "" +"För att lista de officialla översättningarna kan du börja med dessa länkar:" #. module: base #: code:addons/base/ir/ir_model.py:484 @@ -6428,6 +6515,8 @@ msgid "" "You can not read this document (%s) ! Be sure your user belongs to one of " "these groups: %s." msgstr "" +"Du har inte rätt att läsa dokumentet (%s). Kontrollera att din användare " +"ingår i någon av grupperna: %s." #. module: base #: view:res.bank:0 @@ -6451,7 +6540,7 @@ msgstr "Mongoliska / монгол" #. module: base #: model:res.country,name:base.mr msgid "Mauritania" -msgstr "Mauritania" +msgstr "Mauretanien" #. module: base #: model:ir.model,name:base.model_ir_translation @@ -6533,6 +6622,8 @@ msgid "" "Customized views are used when users reorganize the content of their " "dashboard views (via web client)" msgstr "" +"Anpassade vyer används när användare organiserar om sina infopaneler (via " +"webb-klienten)." #. module: base #: field:ir.model,name:0 @@ -6553,7 +6644,7 @@ msgstr "" #: selection:ir.module.module,state:0 #: selection:ir.module.module.dependency,state:0 msgid "Not Installed" -msgstr "Inte installerat" +msgstr "Inte installerad" #. module: base #: view:workflow.activity:0 @@ -6569,7 +6660,7 @@ msgstr "Ikon" #. module: base #: help:ir.model.fields,model_id:0 msgid "The model this field belongs to" -msgstr "" +msgstr "Den modell detta fält tillhör" #. module: base #: model:res.country,name:base.mq @@ -6603,7 +6694,7 @@ msgstr "Or" #: model:ir.actions.act_window,name:base.res_log_act_window #: model:ir.ui.menu,name:base.menu_res_log_act_window msgid "Client Logs" -msgstr "" +msgstr "Klientloggar" #. module: base #: model:res.country,name:base.al @@ -6652,7 +6743,7 @@ msgstr "" #: code:addons/orm.py:2316 #, python-format msgid "ValidateError" -msgstr "" +msgstr "Valideringsfel" #. module: base #: view:base.module.import:0 @@ -6743,7 +6834,7 @@ msgstr "Stop All" #: code:addons/orm.py:412 #, python-format msgid "The read_group method is not implemented on this object !" -msgstr "" +msgstr "Metoden read_group är inte implementerad på detta objekt" #. module: base #: view:ir.model.data:0 @@ -6778,7 +6869,7 @@ msgstr "Kommentar" #. module: base #: model:res.country,name:base.ro msgid "Romania" -msgstr "Romania" +msgstr "Rumänien" #. module: base #: help:ir.cron,doall:0 @@ -6801,7 +6892,7 @@ msgstr "Kontraktvalideringsfel" #. module: base #: field:res.country.state,name:0 msgid "State Name" -msgstr "" +msgstr "Stat (namn)" #. module: base #: field:workflow.activity,join_mode:0 @@ -6856,18 +6947,18 @@ msgstr "Personalchef dashboard" msgid "" "Unable to install module \"%s\" because an external dependency is not met: %s" msgstr "" -"Kan inte installera modul \"%s\" för att ett externa beroend inte är " +"Kan inte installera modul \"%s\" för att ett externt beroend inte är " "uppfyllt: %s" #. module: base #: view:ir.module.module:0 msgid "Search modules" -msgstr "Sök moduler" +msgstr "Sökmoduler" #. module: base #: model:res.country,name:base.by msgid "Belarus" -msgstr "Belarus" +msgstr "Vitryssland" #. module: base #: field:ir.actions.act_window,name:0 @@ -6887,6 +6978,8 @@ msgid "" "not connect to the system. You can assign them groups in order to give them " "specific access to the applications they need to use in the system." msgstr "" +"Skapa och hantera användare. Användare kan bl a deaktiveras och genom " +"tilldelas grupper ges åtkomst till olika delar av systemet." #. module: base #: selection:res.request,priority:0 @@ -6952,7 +7045,7 @@ msgstr "Frk." #. module: base #: model:res.country,name:base.ch msgid "Switzerland" -msgstr "Switzerland" +msgstr "Schweiz" #. module: base #: model:res.country,name:base.gd @@ -7041,7 +7134,7 @@ msgstr "Argument" #: code:addons/orm.py:716 #, python-format msgid "Database ID doesn't exist: %s : %s" -msgstr "" +msgstr "Databas-ID existerar inte %s: %s" #. module: base #: selection:ir.module.module,license:0 @@ -7057,7 +7150,7 @@ msgstr "GPL Version 3" #: code:addons/orm.py:836 #, python-format msgid "key '%s' not found in selection field '%s'" -msgstr "" +msgstr "nyckel %s ej hittad i markerat fält %s" #. module: base #: view:partner.wizard.ean.check:0 @@ -7068,7 +7161,7 @@ msgstr "Korrekt EAN13" #: code:addons/orm.py:2317 #, python-format msgid "The value \"%s\" for the field \"%s\" is not in the selection" -msgstr "" +msgstr "Värdet \"%s\" för fältet \"%s\" finns inte i markerat data." #. module: base #: field:res.partner,customer:0 @@ -7092,7 +7185,7 @@ msgstr "Kort beskrivning" #: field:ir.actions.act_window,context:0 #: field:ir.filters,context:0 msgid "Context Value" -msgstr "Kontaxtvärde" +msgstr "Kontextvärde" #. module: base #: view:ir.sequence:0 @@ -7139,7 +7232,7 @@ msgstr "Nummerserie" #. module: base #: model:res.country,name:base.tn msgid "Tunisia" -msgstr "Tunisia" +msgstr "Tunisien" #. module: base #: model:ir.ui.menu,name:base.menu_mrp_root @@ -7161,7 +7254,7 @@ msgstr "Serveråtgärder" #. module: base #: view:ir.module.module:0 msgid "Cancel Install" -msgstr "Avbryt installering" +msgstr "Avbryt installationen" #. module: base #: field:ir.model.fields,selection:0 @@ -7295,7 +7388,7 @@ msgstr "Varning !" #. module: base #: model:res.widget,title:base.google_maps_widget msgid "Google Maps" -msgstr "" +msgstr "Google Maps" #. module: base #: model:ir.ui.menu,name:base.menu_base_config @@ -7347,17 +7440,17 @@ msgstr "Partner" #. module: base #: model:res.country,name:base.tr msgid "Turkey" -msgstr "Turkey" +msgstr "Turkiet" #. module: base #: model:res.country,name:base.fk msgid "Falkland Islands" -msgstr "Falkland Islands" +msgstr "Falklandsöarna" #. module: base #: model:res.country,name:base.lb msgid "Lebanon" -msgstr "Lebanon" +msgstr "Libanon" #. module: base #: view:ir.actions.report.xml:0 @@ -7389,7 +7482,7 @@ msgstr "" #. module: base #: model:res.country,name:base.no msgid "Norway" -msgstr "Norway" +msgstr "Norge" #. module: base #: view:res.lang:0 @@ -7576,7 +7669,7 @@ msgstr "Lägg till en widget för en användare" #. module: base #: model:res.country,name:base.dk msgid "Denmark" -msgstr "Denmark" +msgstr "Danmark" #. module: base #: field:res.country,code:0 @@ -7592,7 +7685,7 @@ msgstr "workflow.instance" #: code:addons/orm.py:278 #, python-format msgid "Unknown attribute %s in %s " -msgstr "" +msgstr "Okänt attribut %s in %s " #. module: base #: view:res.lang:0 @@ -7603,7 +7696,7 @@ msgstr "10. %S ==> 20" #: code:addons/fields.py:106 #, python-format msgid "undefined get method !" -msgstr "" +msgstr "Odefinerad metod: get!" #. module: base #: selection:base.language.install,lang:0 @@ -7617,6 +7710,8 @@ msgid "" "Only specify a value if you want to change the user password. This user will " "have to logout and login again!" msgstr "" +"Ange ett värde om du vill ändra användarens lösenord. Denna användare måste " +"logga ut och in igen." #. module: base #: model:res.partner.title,name:base.res_partner_title_madam @@ -7626,7 +7721,7 @@ msgstr "Fru" #. module: base #: model:res.country,name:base.ee msgid "Estonia" -msgstr "Estonia" +msgstr "Estland" #. module: base #: model:ir.ui.menu,name:base.dashboard @@ -7642,12 +7737,12 @@ msgstr "Binär fil eller extern URL" #: field:res.config.users,new_password:0 #: field:res.users,new_password:0 msgid "Change password" -msgstr "" +msgstr "Ändra lösenord" #. module: base #: model:res.country,name:base.nl msgid "Netherlands" -msgstr "Netherlands" +msgstr "Nederländerna" #. module: base #: model:ir.ui.menu,name:base.next_id_4 @@ -7872,7 +7967,7 @@ msgstr "Åtkomsträttigheter" #. module: base #: model:res.country,name:base.gl msgid "Greenland" -msgstr "Greenland" +msgstr "Grönland" #. module: base #: field:res.partner.bank,acc_number:0 @@ -7892,7 +7987,7 @@ msgstr "New Caledonia (French)" #. module: base #: model:res.country,name:base.cy msgid "Cyprus" -msgstr "Cyprus" +msgstr "Cypern" #. module: base #: view:base.module.import:0 @@ -7901,7 +7996,7 @@ msgid "" "loading a new language it becomes available as default interface language " "for users and partners." msgstr "" -"Den här wizarden hjälper dig lägga till ett nytt språk till ditt OpenERP " +"Den här guiden hjälper dig lägga till ett nytt språk till ditt OpenERP " "system. Det nya språket blir standardspråk för användare och partners." #. module: base @@ -7956,7 +8051,7 @@ msgstr "Övriga" #. module: base #: model:res.country,name:base.cn msgid "China" -msgstr "China" +msgstr "Kina" #. module: base #: code:addons/base/res/res_user.py:516 @@ -7969,7 +8064,7 @@ msgstr "" #. module: base #: model:res.country,name:base.eh msgid "Western Sahara" -msgstr "Western Sahara" +msgstr "Västsahara" #. module: base #: model:ir.model,name:base.model_workflow @@ -7982,11 +8077,13 @@ msgid "" "Create and manage the companies that will be managed by OpenERP from here. " "Shops or subsidiaries can be created and maintained from here." msgstr "" +"Skapa och hantera de företag som skall hanteras av OpenERP här. Även affärer " +"och dotterbolag kan hanteras här." #. module: base #: model:res.country,name:base.id msgid "Indonesia" -msgstr "Indonesia" +msgstr "Indonesien" #. module: base #: view:base.update.translations:0 @@ -8011,7 +8108,7 @@ msgstr "Bulgaria" #. module: base #: view:publisher_warranty.contract.wizard:0 msgid "Publisher warranty contract successfully registered!" -msgstr "" +msgstr "Utgivarens underhållskontrakt registrerat, inga fel." #. module: base #: model:res.country,name:base.ao @@ -8021,7 +8118,7 @@ msgstr "Angola" #. module: base #: model:res.country,name:base.tf msgid "French Southern Territories" -msgstr "French Southern Territories" +msgstr "Franska sydterritorierna" #. module: base #: model:ir.model,name:base.model_res_currency @@ -8067,7 +8164,7 @@ msgstr "Administration" #. module: base #: view:base.module.update:0 msgid "Click on Update below to start the process..." -msgstr "Klicka op Uppdatera nedan för att starta bearbetningen..." +msgstr "Klicka på \"Uppdatera\" nedan för att starta bearbetningen..." #. module: base #: model:res.country,name:base.ir @@ -8198,6 +8295,8 @@ msgid "" "Operation prohibited by access rules, or performed on an already deleted " "document (Operation: %s, Document type: %s)." msgstr "" +"Åtkomst för åtgärden nekad, eller försök att genomföra åtgärd på borttaget " +"dokument( åtgärd: %s, dokumenttyp: %s)" #. module: base #: model:res.country,name:base.zr @@ -8311,7 +8410,7 @@ msgstr "Exportera" #. module: base #: model:res.country,name:base.hr msgid "Croatia" -msgstr "Croatia" +msgstr "Kroatien" #. module: base #: help:res.bank,bic:0 @@ -8363,7 +8462,7 @@ msgstr "Saint Pierre and Miquelon" #. module: base #: help:ir.actions.report.xml,header:0 msgid "Add or not the coporate RML header" -msgstr "" +msgstr "Lägg till (eller inte) företagets RML-rubrik" #. module: base #: help:workflow.transition,act_to:0 @@ -8394,12 +8493,12 @@ msgstr "Danska / Dansk" #. module: base #: selection:ir.model.fields,select_level:0 msgid "Advanced Search (deprecated)" -msgstr "" +msgstr "Avancerad sökning (förkastad)" #. module: base #: model:res.country,name:base.cx msgid "Christmas Island" -msgstr "Christmas Island" +msgstr "Julön" #. module: base #: view:ir.actions.server:0 @@ -8518,7 +8617,7 @@ msgstr "Katalanska / Català" #. module: base #: model:res.country,name:base.do msgid "Dominican Republic" -msgstr "Dominican Republic" +msgstr "Dominikanska Republiken" #. module: base #: selection:base.language.install,lang:0 @@ -8536,7 +8635,7 @@ msgstr "" #. module: base #: model:res.country,name:base.sa msgid "Saudi Arabia" -msgstr "Saudi Arabia" +msgstr "Saudiarabien" #. module: base #: help:res.partner,supplier:0 @@ -8572,7 +8671,7 @@ msgstr "" #: field:ir.actions.act_window,multi:0 #: field:ir.actions.wizard,multi:0 msgid "Action on Multiple Doc." -msgstr "" +msgstr "Atgärd på flera dokument" #. module: base #: view:base.language.export:0 @@ -8624,12 +8723,14 @@ msgid "" "3. If user belongs to several groups, the results from step 2 are combined " "with logical OR operator" msgstr "" +"3. Om en användare tillhör flera grupper, så kombineras resultaten från steg " +"2 med ett logiskt 'eller' (eng 'OR) villkor." #. module: base #: code:addons/base/publisher_warranty/publisher_warranty.py:145 #, python-format msgid "Please check your publisher warranty contract name and validity." -msgstr "" +msgstr "Kontrollera namn och giltighet på utgivarens garantikontrakt." #. module: base #: model:res.country,name:base.sv @@ -8767,7 +8868,7 @@ msgstr "Ej installerbar" #. module: base #: report:ir.module.reference.graph:0 msgid "View :" -msgstr "Visa :" +msgstr "Vy" #. module: base #: field:ir.model.fields,view_load:0 @@ -8800,7 +8901,7 @@ msgstr "" #. module: base #: view:ir.actions.act_window:0 msgid "View Ordering" -msgstr "" +msgstr "Vysortering" #. module: base #: code:addons/base/module/wizard/base_module_upgrade.py:95 @@ -8824,6 +8925,8 @@ msgid "" "You can not delete this document (%s) ! Be sure your user belongs to one of " "these groups: %s." msgstr "" +"Du kan inte ta bort detta dokument(%s). Kontrollera att din användare ingår " +"i en av grupperna: %s" #. module: base #: model:ir.model,name:base.model_base_module_configuration @@ -8902,7 +9005,7 @@ msgstr "Epost & signatur" #. module: base #: view:publisher_warranty.contract:0 msgid "Publisher Warranty Contract" -msgstr "" +msgstr "Utgivarens garantikontrakt" #. module: base #: selection:base.language.install,lang:0 @@ -8946,7 +9049,7 @@ msgstr "" #. module: base #: model:res.country,name:base.az msgid "Azerbaijan" -msgstr "Azerbaijan" +msgstr "Azerbajdzjan" #. module: base #: code:addons/base/res/partner/partner.py:250 @@ -8962,7 +9065,7 @@ msgstr "Arabic / الْعَرَبيّة" #. module: base #: model:res.country,name:base.vg msgid "Virgin Islands (British)" -msgstr "Virgin Islands (British)" +msgstr "Jungfruöarna (brittiska)" #. module: base #: view:ir.property:0 @@ -8973,7 +9076,7 @@ msgstr "Parametrar" #. module: base #: selection:base.language.install,lang:0 msgid "Czech / Čeština" -msgstr "Czech / Čeština" +msgstr "tjeckiska / Čeština" #. module: base #: view:ir.actions.server:0 @@ -9069,6 +9172,8 @@ msgid "" "1. Global rules are combined together with a logical AND operator, and with " "the result of the following steps" msgstr "" +"1. Globala regler kombinerar med ett logiskt och-villkor (emg: AND), och med " +"resultat av följande steg" #. module: base #: field:res.partner.category,name:0 @@ -9113,7 +9218,7 @@ msgstr "Stående" #: code:addons/base/ir/ir_model.py:317 #, python-format msgid "Can only rename one column at a time!" -msgstr "" +msgstr "Kan bara byta namn på en kolumn åt gången" #. module: base #: selection:ir.translation,type:0 @@ -9194,6 +9299,7 @@ msgstr "Villkor" #: help:ir.values,model_id:0 msgid "This field is not used, it only helps you to select a good model." msgstr "" +"Detta fält används inte, det hjälper bara till att välja en bra modell." #. module: base #: field:ir.ui.view,name:0 @@ -9215,7 +9321,7 @@ msgstr "Spara som bilageprefix" msgid "" "Only one client action will be executed, last client action will be " "considered in case of multiple client actions." -msgstr "" +msgstr "Bara en klientåtgärd körs, om flera anges körs bara den sists." #. module: base #: view:res.lang:0 @@ -9254,7 +9360,7 @@ msgstr "Prefix för löpnumret" #. module: base #: model:res.country,name:base.sc msgid "Seychelles" -msgstr "Seychelles" +msgstr "Seychellerna" #. module: base #: model:ir.model,name:base.model_res_partner_bank @@ -9341,7 +9447,7 @@ msgstr "Guinea Bissau" #. module: base #: view:workflow.instance:0 msgid "Workflow Instances" -msgstr "" +msgstr "Arbetsflödeinstanser" #. module: base #: code:addons/base/res/partner/partner.py:261 @@ -9352,7 +9458,7 @@ msgstr "Partners " #. module: base #: model:res.country,name:base.kp msgid "North Korea" -msgstr "North Korea" +msgstr "Nordkorea" #. module: base #: selection:ir.actions.server,state:0 @@ -9378,7 +9484,7 @@ msgstr "Prospekt" #. module: base #: selection:base.language.install,lang:0 msgid "Polish / Język polski" -msgstr "Polish / Język polski" +msgstr "polska / Język polski" #. module: base #: field:ir.exports,name:0 @@ -9402,7 +9508,7 @@ msgstr "Sri Lanka" #. module: base #: selection:base.language.install,lang:0 msgid "Russian / русский язык" -msgstr "Russian / русский язык" +msgstr "ryska / русский язык" #~ msgid "Yearly" #~ msgstr "Årligen" diff --git a/openerp/addons/base/i18n/tr.po b/openerp/addons/base/i18n/tr.po index 11f41ad3d12..7b117296f10 100644 --- a/openerp/addons/base/i18n/tr.po +++ b/openerp/addons/base/i18n/tr.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2011-01-25 08:14+0000\n" +"PO-Revision-Date: 2011-05-26 05:01+0000\n" "Last-Translator: Ahmet Altınışık \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-01-26 04:36+0000\n" -"X-Generator: Launchpad (build 12177)\n" +"X-Launchpad-Export-Date: 2011-05-27 04:45+0000\n" +"X-Generator: Launchpad (build 12959)\n" #. module: base #: view:ir.filters:0 @@ -47,6 +47,8 @@ msgid "" "The second argument of the many2many field %s must be a SQL table !You used " "%s, which is not a valid SQL table name." msgstr "" +"Çoktan çoğanın % s alanının ikinci argümanı bir SQL tablosu olmalı! " +"Kullandığınız % s geçerli bir SQL tablo adı değil." #. module: base #: view:ir.values:0 @@ -1098,6 +1100,9 @@ msgid "" "system. After the contract has been registered, you will be able to send " "issues directly to OpenERP." msgstr "" +"Bu sihirbaz OpenERP sisteminize yayıncı garanti sözleşmesine kaydetmenize " +"yardımcı olur. Sözleşme kaydınız yapıldığında, soru(n)larınızı doğrudan " +"OpenERP ye gönderebilirsiniz." #. module: base #: code:addons/orm.py:1744 @@ -3499,6 +3504,12 @@ msgid "" "Would your payment have been carried out after this mail was sent, please " "consider the present one as void." msgstr "" +"Lütfen aşağıdaki vadesi gelen ödemelerinize göz atın. Eğer ödemenizi zaten " +"yaptıysanız kayıtlarımıza girebilmemiz için lütfen ödeme detaylarınızı bize " +"gönderin. Eğer ödeme vadenizi geciktirecekseniz lütfen konuyu görüşmek için " +"bizi arayın. \n" +"Eğer ödemenizi bu mesajı aldıktan sonra gerçekleştirdiyseniz, lütfen bu " +"uyarıyı dikkate almayın." #. module: base #: model:res.country,name:base.mx @@ -3529,7 +3540,7 @@ msgstr "Nikaragua" #: code:addons/orm.py:1046 #, python-format msgid "The write method is not implemented on this object !" -msgstr "" +msgstr "Write metodu bu nesnee üzerinde uygulanmamış !" #. module: base #: view:res.partner.event:0 @@ -3873,12 +3884,12 @@ msgstr "Gujarati / ગુજરાતી" #, python-format msgid "" "Unable to process module \"%s\" because an external dependency is not met: %s" -msgstr "" +msgstr "Modül \"%s\" işlenemiyor. Dış bağımlılık karşılanamıyor: %s" #. module: base #: view:publisher_warranty.contract.wizard:0 msgid "Please enter the serial key provided in your contract document:" -msgstr "" +msgstr "Sözlemenizde yeralan seri numaranızı girin:" #. module: base #: view:workflow.activity:0 @@ -4328,6 +4339,8 @@ msgid "" "You cannot perform this operation. New Record Creation is not allowed for " "this object as this object is for reporting purpose." msgstr "" +"Bu işlemi gerçekleştiremezsiniz. Bu nesne raporlama amaçlı olduğu için yeni " +"kayıt oluşturmaya izin verilmemiştir." #. module: base #: view:base.language.import:0 @@ -4351,7 +4364,7 @@ msgstr "" #. module: base #: help:ir.model.fields,relation:0 msgid "For relationship fields, the technical name of the target model" -msgstr "" +msgstr "İlişkili alanlar için hedef modelin teknik adı" #. module: base #: selection:base.language.install,lang:0 @@ -4381,7 +4394,7 @@ msgstr "Web ikon resmi (hover)" #. module: base #: view:base.module.import:0 msgid "Module file successfully imported!" -msgstr "" +msgstr "Modül dosyası başarılı bir şekilde içeri alındı!" #. module: base #: selection:ir.actions.todo,state:0 @@ -4396,7 +4409,7 @@ msgstr "Kullanıcı Oluştur" #. module: base #: view:partner.clear.ids:0 msgid "Want to Clear Ids ? " -msgstr "" +msgstr "ID leri temizlemek istiyor musunuz ? " #. module: base #: field:publisher_warranty.contract,name:0 @@ -4452,12 +4465,12 @@ msgstr "kopyası" #. module: base #: field:ir.model,osv_memory:0 msgid "In-memory model" -msgstr "" +msgstr "Hafıza içi modeli" #. module: base #: view:partner.clear.ids:0 msgid "Clear Ids" -msgstr "" +msgstr "ID leri sil" #. module: base #: model:res.country,name:base.io @@ -4479,7 +4492,7 @@ msgstr "Alan Eşleşmeleri" #. module: base #: view:publisher_warranty.contract:0 msgid "Refresh Validation Dates" -msgstr "" +msgstr "Onaylama tarihlerini yenile" #. module: base #: view:ir.model:0 @@ -4550,7 +4563,7 @@ msgstr "_Tamam" #. module: base #: help:ir.filters,user_id:0 msgid "False means for every user" -msgstr "" +msgstr "Hata her kullanıcı içindir." #. module: base #: code:addons/base/module/module.py:198 @@ -4634,6 +4647,9 @@ msgid "" "OpenERP. They are launched during the installation of new modules, but you " "can choose to restart some wizards manually from this menu." msgstr "" +"Ayarlama sihirbazları yeni OpenERP kurulumlarını konfigüre etmenize yardım " +"eder. Yeni modüllerin kurulumu sırasında çalıştırılırlar, ileriki bir " +"zamanda manuel olarak da çalıştırabilirsiniz." #. module: base #: code:addons/base/res/res_user.py:206 @@ -4642,12 +4658,14 @@ msgid "" "Please use the change password wizard (in User Preferences or User menu) to " "change your own password." msgstr "" +"Lütfen kendi şifrenizi değiştirmek için şifre değiştirme sihirbazını " +"kullanın (Kullanıcı ayarlarında ya da Kullanıcı menüsünde)" #. module: base #: code:addons/orm.py:1350 #, python-format msgid "Insufficient fields for Calendar View!" -msgstr "" +msgstr "Takvim görünümü için alanlar yetersiz" #. module: base #: selection:ir.property,type:0 @@ -4660,12 +4678,14 @@ msgid "" "The path to the main report file (depending on Report Type) or NULL if the " "content is in another data field" msgstr "" +"Ana rapor dosyasının dosya yolu (Rapor tipine göre) ya da içerik başka bir " +"veri alanı ise BOŞ bırakın" #. module: base #: help:res.config.users,company_id:0 #: help:res.users,company_id:0 msgid "The company this user is currently working for." -msgstr "" +msgstr "Kullanıcının halihazırda çalıştığı şirket" #. module: base #: model:ir.model,name:base.model_wizard_ir_model_menu_create @@ -4751,12 +4771,12 @@ msgstr "Bu Pencere" #. module: base #: view:publisher_warranty.contract:0 msgid "Publisher Warranty Contracts" -msgstr "" +msgstr "Yayıncı Garanti Sözleşmesi" #. module: base #: help:res.log,name:0 msgid "The logging message." -msgstr "" +msgstr "Günlük kayıt mesajları" #. module: base #: field:base.language.export,format:0 @@ -4791,6 +4811,8 @@ msgid "" "federal states you are working on from here. Each state is attached to one " "country." msgstr "" +"Eğer ABD pazarı ile çalışıyorsanız farklı eyaletleri buradan " +"yönetebilirsiniz. Her eyalet bir ülkeye bağlanmıştır." #. module: base #: view:workflow.workitem:0 @@ -4828,7 +4850,7 @@ msgstr "Çalışanlar" #: help:res.log,read:0 msgid "" "If this log item has been read, get() should not send it to the client" -msgstr "" +msgstr "Eğer bu günlük maddesi okunduysa get() bunu istemciye göndermez" #. module: base #: field:res.company,rml_header2:0 @@ -4941,7 +4963,7 @@ msgstr "Özel Alan" #. module: base #: field:ir.module.module,web:0 msgid "Has a web component" -msgstr "" +msgstr "Web bileşeni var" #. module: base #: model:res.country,name:base.cc @@ -4953,7 +4975,7 @@ msgstr "Kokos (Keeling) Adaları" #: selection:base.module.import,state:0 #: selection:base.module.update,state:0 msgid "init" -msgstr "" +msgstr "başlatma" #. module: base #: view:res.lang:0 @@ -4978,6 +5000,9 @@ msgid "" "\n" "This addon is already installed on your system" msgstr "" +"\n" +"\n" +"Bu eklenti halihazırda sisteminizde kurulu" #. module: base #: help:ir.cron,interval_number:0 @@ -5054,7 +5079,7 @@ msgstr "İstemci Eylemleri" #: code:addons/orm.py:1806 #, python-format msgid "The exists method is not implemented on this object !" -msgstr "" +msgstr "Exists metodu bu nesne üzerinde uygulanmamış !" #. module: base #: code:addons/base/module/module.py:336 @@ -5220,6 +5245,13 @@ msgid "" "installed the CRM, with the history tab, you can track all the interactions " "with a partner such as opportunities, emails, or sales orders issued." msgstr "" +"Müşteriler bölümü ( sistemin diğer yerlerinde İş Ortağı olarak anılacak) " +"Birlikte iş yaptığınız (müşterileriniz, tedarikçileriniz, çalışanlarınız) " +"şirketlerin adreslerini tutmanıza yarar. İş ortağı formu iş ortaklarınızla " +"ilişkilerinizdeki gerekli bütün bilgileri, şirket adreslerini, kişileri, ve " +"hatta fiyat listelerini takip etmenizi sağlar. Eğer CRM modülü kurduysanız " +"Geçmiş sekmesiyle İş ortağınız ile olan bütün iletişiminizi, sipariş " +"emirlerini, e-posta mesajlarını vs görebilirsiniz." #. module: base #: model:res.country,name:base.ph @@ -5352,7 +5384,7 @@ msgstr "Modül Listesini Güncelle" #, python-format msgid "" "Unable to upgrade module \"%s\" because an external dependency is not met: %s" -msgstr "" +msgstr "Modül \"%s\" kurulamıyor. Çünkü modülün bagımlılığı sağlanmıyor: %s" #. module: base #: code:addons/base/res/res_user.py:257 @@ -5363,6 +5395,9 @@ msgid "" "sure to save and close all forms before switching to a different company. " "(You can click on Cancel in the User Preferences now)" msgstr "" +"Lütfen sistemi başka bir şirkete geçirince halihazırda açık olan " +"dökümanlarınızdaki kadedilmemiş bölümlerini kaybedeceğinizi unutmayın. " +"(Kullanıcı seçeneklerinden iptale basabilirsiniz)" #. module: base #: view:ir.actions.configuration.wizard:0 @@ -5476,7 +5511,7 @@ msgstr "Amerikan Samoası" #. module: base #: help:ir.actions.act_window,res_model:0 msgid "Model name of the object to open in the view window" -msgstr "" +msgstr "Nesnenin görüntü penceresindeki model adı" #. module: base #: field:res.log,secondary:0 @@ -5587,7 +5622,7 @@ msgstr "8. %I:%M:%S %p ==> 06:25:20 PM" #: code:addons/orm.py:1803 #, python-format msgid "The copy method is not implemented on this object !" -msgstr "" +msgstr "Copy metodu bu nesne için uygulanmamış" #. module: base #: field:res.log,create_date:0 @@ -5655,6 +5690,10 @@ msgid "" "Warning: if \"email_from\" and \"smtp_server\" aren't configured, it won't " "be possible to email new users." msgstr "" +"Eğer e-posta sağlanmışsa kullanıcıya bir hoşgeldin mesajı gönderilir.\n" +"\n" +"Uyarı:eğer \"email_from\" ve \"smtp_server\" ayarlanmamışsa e-posta " +"gönderilemeyecektir." #. module: base #: selection:base.language.install,lang:0 @@ -5783,19 +5822,19 @@ msgstr "res.widget" #: code:addons/base/ir/ir_model.py:258 #, python-format msgid "Model %s does not exist!" -msgstr "" +msgstr "%s modeli yok !" #. module: base #: code:addons/base/res/res_lang.py:159 #, python-format msgid "You cannot delete the language which is User's Preferred Language !" -msgstr "" +msgstr "Kullanıcının varsayılan dili olarak seçilmiş bir dili silemezsiniz !" #. module: base #: code:addons/fields.py:103 #, python-format msgid "Not implemented get_memory method !" -msgstr "" +msgstr "Uygulanmamış get_memory metodu!" #. module: base #: view:ir.actions.server:0 @@ -5842,7 +5881,7 @@ msgstr "Tarafsız Bölge" #. module: base #: selection:base.language.install,lang:0 msgid "Hindi / हिंदी" -msgstr "" +msgstr "Hintçe / हिंदी" #. module: base #: view:ir.model:0 @@ -5927,12 +5966,14 @@ msgid "" "View type: set to 'tree' for a hierarchical tree view, or 'form' for other " "views" msgstr "" +"Ekran tipi: Hiyerarşik ağaç görünümü için 'ağaç' olarak ayarlayın ya da " +"diğer ekranlar için 'form' seçin" #. module: base #: code:addons/base/res/res_config.py:421 #, python-format msgid "Click 'Continue' to configure the next addon..." -msgstr "" +msgstr "Bir sonraki eklentiyi ayarlamak için 'Devam' tuşuna basın..." #. module: base #: field:ir.actions.server,record_id:0 @@ -5950,6 +5991,8 @@ msgstr "Honduras" msgid "" "Check out this box if you want to always display tips on each menu action" msgstr "" +"Eğer her menü eyleminde ipuçlarını göstermek istiyorsanız bu kutucuğu " +"işaretleyin." #. module: base #: model:res.country,name:base.eg @@ -5959,7 +6002,7 @@ msgstr "Mısır" #. module: base #: field:ir.rule,perm_read:0 msgid "Apply For Read" -msgstr "" +msgstr "Okuma için başvur" #. module: base #: help:ir.actions.server,model_id:0 @@ -5971,7 +6014,7 @@ msgstr "İşlemin üzerinde çalışacağı (okuma, yazma, oluşturma) nesneyi s #: code:addons/base/ir/ir_actions.py:629 #, python-format msgid "Please specify server option --email-from !" -msgstr "" +msgstr "Sunucu seçeneğini tanımlayın --email-from ! (e-posta gönderen)" #. module: base #: field:base.language.import,name:0 @@ -6042,7 +6085,7 @@ msgstr "Taban" #. module: base #: selection:base.language.install,lang:0 msgid "Telugu / తెలుగు" -msgstr "" +msgstr "Telugu / తెలుగు" #. module: base #: model:res.country,name:base.lr @@ -6139,6 +6182,8 @@ msgid "" "All pending configuration wizards have been executed. You may restart " "individual wizards via the list of configuration wizards." msgstr "" +"Bekleyen bütün ayar sihirbazları çalıştırıldı. Sihirbazları ayar " +"sihirbazları listesinden tek tek çalıştırabilirsiniz." #. module: base #: wizard_button:server.action.create,step_1,create:0 @@ -6213,7 +6258,7 @@ msgstr "Tür" #: code:addons/orm.py:3775 #, python-format msgid "This method does not exist anymore" -msgstr "" +msgstr "Bu yöntem artık mevcut değil" #. module: base #: field:res.bank,fax:0 @@ -6278,13 +6323,13 @@ msgstr "Ltd." #: help:workflow.transition,group_id:0 msgid "" "The group that a user must have to be authorized to validate this transition." -msgstr "" +msgstr "Bu çeviriyi onaylaması için kullanıcının içinde olması gereken grup" #. module: base #: constraint:res.config.users:0 #: constraint:res.users:0 msgid "The chosen company is not in the allowed companies for this user" -msgstr "" +msgstr "Bu kullanıcının seçilen şirkete erişim hakkı yok" #. module: base #: model:res.country,name:base.gi @@ -6306,6 +6351,8 @@ msgstr "Pitcairn Adası" msgid "" "We suggest to reload the menu tab to see the new menus (Ctrl+T then Ctrl+R)." msgstr "" +"Yeni menüleri görebilmek için menü sekmesini yenilemenizi öneririz. (Ctrl+T " +"sonra Ctrl+R)." #. module: base #: model:ir.actions.act_window,name:base.action_rule @@ -6337,6 +6384,8 @@ msgid "" "OpenERP will automatically adds some '0' on the left of the 'Next Number' to " "get the required padding size." msgstr "" +"OpenERP gerekli rakam sayısını tamamlamak için sonraki sayının soluna " +"gerektiği kadar '0' ekleyecektir." #. module: base #: view:res.lang:0 @@ -6356,7 +6405,7 @@ msgstr "Arama Görünümü" #. module: base #: sql_constraint:res.lang:0 msgid "The code of the language must be unique !" -msgstr "" +msgstr "Dil kodu tekil olmak zorunda !" #. module: base #: model:ir.actions.act_window,name:base.action_attachment @@ -6399,7 +6448,7 @@ msgstr "Yazma Erişimi" #. module: base #: view:res.lang:0 msgid "%m - Month number [01,12]." -msgstr "" +msgstr "%m - Ay numarası [01,12]." #. module: base #: field:res.bank,city:0 @@ -6457,7 +6506,7 @@ msgstr "İngilizce (ABD)" #: view:ir.model.data:0 #: model:ir.ui.menu,name:base.ir_model_data_menu msgid "Object Identifiers" -msgstr "" +msgstr "Nesne tanımlayıcıları" #. module: base #: model:ir.actions.act_window,help:base.action_partner_title_partner @@ -6465,11 +6514,13 @@ msgid "" "Manage the partner titles you want to have available in your system. The " "partner titles is the legal status of the company: Private Limited, SA, etc." msgstr "" +"Sisteminizdeki İş ortağı ünvanlarını yönetin. İş ortağı ünvanları " +"şirketlerin yasal durumlarını gösterir: A.Ş., LTD, Şahıs Firması, SA, vs." #. module: base #: view:base.language.export:0 msgid "To browse official translations, you can start with these links:" -msgstr "" +msgstr "Resmi çevirilere gözatmak için bağlantıları kullanabilirsiniz:" #. module: base #: code:addons/base/ir/ir_model.py:484 @@ -6478,6 +6529,8 @@ msgid "" "You can not read this document (%s) ! Be sure your user belongs to one of " "these groups: %s." msgstr "" +"Dökümanı okuma hakkınız yok (%s) ! Kullanıcınızın şu guruplardan birine üye " +"olması gerekir: %s." #. module: base #: view:res.bank:0 @@ -6511,7 +6564,7 @@ msgstr "ir.translation" #. module: base #: view:base.module.update:0 msgid "Module update result" -msgstr "" +msgstr "Modül güncelleştirme sonucu" #. module: base #: view:workflow.activity:0 @@ -6573,6 +6626,9 @@ msgid "" "for the currency: %s \n" "at the date: %s" msgstr "" +"Kur bulunamadı \n" +"Kur bulunamayan döviz: %s \n" +"Tarih: %s" #. module: base #: model:ir.actions.act_window,help:base.action_ui_view_custom @@ -6580,6 +6636,8 @@ msgid "" "Customized views are used when users reorganize the content of their " "dashboard views (via web client)" msgstr "" +"Özelleştirilmiş görünümler Kullanıcılar kontrol panel görünüşlerini yeniden " +"düzenlediklerinde kullanılır (web istemcisi ile)" #. module: base #: field:ir.model,name:0 @@ -6618,7 +6676,7 @@ msgstr "Simge" #. module: base #: help:ir.model.fields,model_id:0 msgid "The model this field belongs to" -msgstr "" +msgstr "Bu alandaki modelin ait olduğu" #. module: base #: model:res.country,name:base.mq @@ -6671,6 +6729,8 @@ msgid "" "You cannot delete the language which is Active !\n" "Please de-activate the language first." msgstr "" +"Aktif olan dili silemezsiniz !\n" +"lütfen önce dili değiştirin." #. module: base #: view:base.language.install:0 @@ -6679,6 +6739,8 @@ msgid "" "Please be patient, this operation may take a few minutes (depending on the " "number of modules currently installed)..." msgstr "" +"Lütfen sabırlı olun, bu işlem birkaç dakika sürebilir (şu and kurulmaya " +"çalışılan modül sayısına göre değişir)..." #. module: base #: field:ir.ui.menu,child_id:0 @@ -6697,7 +6759,7 @@ msgstr "Sunucu İşlemi Yapılandırma `Kayıt Belirteci` sorunu!" #: code:addons/orm.py:2316 #, python-format msgid "ValidateError" -msgstr "" +msgstr "DoğrulamaHatası" #. module: base #: view:base.module.import:0 @@ -6708,7 +6770,7 @@ msgstr "Modülleri Aç" #. module: base #: model:ir.actions.act_window,help:base.action_res_bank_form msgid "Manage bank records you want to be used in the system." -msgstr "" +msgstr "Sistemde kullanılacak banka hesaplarını yönetin." #. module: base #: view:base.module.import:0 @@ -6726,6 +6788,8 @@ msgid "" "The path to the main report file (depending on Report Type) or NULL if the " "content is in another field" msgstr "" +"Ana rapor dosyasının dosya yolu (Rapor tipine bağlı olarak) eğer içerik " +"başka bir alan ise BOŞ bırakın" #. module: base #: model:res.country,name:base.la @@ -6775,7 +6839,7 @@ msgstr "Togo" #. module: base #: selection:ir.module.module,license:0 msgid "Other Proprietary" -msgstr "" +msgstr "Diğer tescilli" #. module: base #: selection:workflow.activity,kind:0 @@ -6786,7 +6850,7 @@ msgstr "Tümünü Durdur" #: code:addons/orm.py:412 #, python-format msgid "The read_group method is not implemented on this object !" -msgstr "" +msgstr "read_group yöntemi bu nesne üzerinde uygulanmamış !" #. module: base #: view:ir.model.data:0 @@ -6829,6 +6893,8 @@ msgid "" "Enable this if you want to execute missed occurences as soon as the server " "restarts." msgstr "" +"Eğer kaçırılan işlerin sunucu tekrar başladığında çalıştırılmasını " +"istiyorsanız onaylayın." #. module: base #: view:base.module.upgrade:0 @@ -6839,7 +6905,7 @@ msgstr "Güncellemeye Başla" #: code:addons/base/publisher_warranty/publisher_warranty.py:144 #, python-format msgid "Contract validation error" -msgstr "" +msgstr "Sözleşme doğrulama hatası" #. module: base #: field:res.country.state,name:0 @@ -6899,7 +6965,7 @@ msgstr "İK Yönetim Kontrol Paneli" #, python-format msgid "" "Unable to install module \"%s\" because an external dependency is not met: %s" -msgstr "" +msgstr "Modül \"%s\" kurulamıyor. Sağlanamayan bağımlılık : %s" #. module: base #: view:ir.module.module:0 @@ -6929,6 +6995,9 @@ msgid "" "not connect to the system. You can assign them groups in order to give them " "specific access to the applications they need to use in the system." msgstr "" +"Sisteme giriş yapacak kullanıcıların oluşturup yönetin. Kullanıcı " +"hesaplarını belirli bir süreliğine kapatabilir ya da erişim haklarını " +"düzenleyebileceğiniz gruplara atayabilirsiniz." #. module: base #: selection:res.request,priority:0 @@ -6950,7 +7019,7 @@ msgstr "Modülleri Güncelle" #: code:addons/base/module/wizard/base_module_upgrade.py:95 #, python-format msgid "Following modules are not installed or unknown: %s" -msgstr "" +msgstr "Şu modüller kurulmamış ya da bilinmiyor: %s" #. module: base #: view:ir.cron:0 @@ -7026,13 +7095,14 @@ msgstr "Yükle" #: help:res.users,name:0 msgid "The new user's real name, used for searching and most listings" msgstr "" +"Yeni kullanıcının gerçek adı, aramalarda ve listelemelerde kullanılır" #. module: base #: code:addons/osv.py:154 #: code:addons/osv.py:156 #, python-format msgid "Integrity Error" -msgstr "" +msgstr "Bütünlük Hatası" #. module: base #: model:ir.model,name:base.model_ir_wizard_screen @@ -7053,7 +7123,7 @@ msgstr "Somali" #. module: base #: selection:publisher_warranty.contract,state:0 msgid "Terminated" -msgstr "" +msgstr "Sonlandırıldı" #. module: base #: model:res.partner.category,name:base.res_partner_category_13 @@ -7082,7 +7152,7 @@ msgstr "Değişkenler" #: code:addons/orm.py:716 #, python-format msgid "Database ID doesn't exist: %s : %s" -msgstr "" +msgstr "Veritabanı ID si yok: %s : %s" #. module: base #: selection:ir.module.module,license:0 @@ -7098,7 +7168,7 @@ msgstr "GPL Sürüm 3" #: code:addons/orm.py:836 #, python-format msgid "key '%s' not found in selection field '%s'" -msgstr "" +msgstr "'%s' anahtarı seçim alanı '%s' de bulunamadı" #. module: base #: view:partner.wizard.ean.check:0 @@ -7109,7 +7179,7 @@ msgstr "Doğru EAN13" #: code:addons/orm.py:2317 #, python-format msgid "The value \"%s\" for the field \"%s\" is not in the selection" -msgstr "" +msgstr "\"%s\" Alanı değeri \"%s\" seçim kapsamında değildir" #. module: base #: field:res.partner,customer:0 @@ -7229,7 +7299,7 @@ msgstr "Nesneyi Kopyala" #, python-format msgid "" "Group(s) cannot be deleted, because some user(s) still belong to them: %s !" -msgstr "" +msgstr "Grup silinemiyor. Halen içinde bazı kullanıcılar var: %s !" #. module: base #: model:ir.actions.act_window,name:base.action_country_state @@ -7284,6 +7354,9 @@ msgid "" "\n" "[object with reference: %s - %s]" msgstr "" +"\n" +"\n" +"[referanslı nesneler: %s - %s]" #. module: base #: model:ir.model,name:base.model_ir_default @@ -7313,6 +7386,8 @@ msgid "" "Number of time the function is called,\n" "a negative number indicates no limit" msgstr "" +"Fonksiyonun kaç kere çağırılacağı,\n" +"negatif değer limit yok anlamındadır" #. module: base #: code:addons/base/ir/ir_model.py:331 @@ -7321,6 +7396,7 @@ msgid "" "Changing the type of a column is not yet supported. Please drop it and " "create it again!" msgstr "" +"Kolon tipini değiştirmek henüz desteklenmiyor. Lütfen silip tekrar oluşturun!" #. module: base #: field:ir.ui.view_sc,user_id:0 @@ -7352,7 +7428,7 @@ msgstr "Yapılandırma" #. module: base #: model:ir.model,name:base.model_publisher_warranty_contract_wizard msgid "publisher_warranty.contract.wizard" -msgstr "" +msgstr "publisher_warranty.contract.wizard" #. module: base #: field:ir.actions.server,expression:0 @@ -7425,7 +7501,7 @@ msgstr "Durum" #. module: base #: selection:base.language.install,lang:0 msgid "Galician / Galego" -msgstr "" +msgstr "Galiçya dili / Galego" #. module: base #: model:res.country,name:base.no @@ -7446,7 +7522,7 @@ msgstr "Resmi Çeviri Yükle" #. module: base #: view:res.currency:0 msgid "Miscelleanous" -msgstr "" +msgstr "Çeşitli" #. module: base #: model:res.partner.category,name:base.res_partner_category_10 @@ -7466,7 +7542,7 @@ msgstr "bekleniyor" #. module: base #: field:ir.actions.report.xml,report_file:0 msgid "Report file" -msgstr "" +msgstr "Rapor Dosyası" #. module: base #: model:ir.model,name:base.model_workflow_triggers @@ -7477,7 +7553,7 @@ msgstr "workflow.triggers" #: code:addons/base/ir/ir_model.py:62 #, python-format msgid "Invalid search criterions" -msgstr "" +msgstr "Geçersiz arama kriterleri" #. module: base #: view:ir.attachment:0 @@ -7496,7 +7572,7 @@ msgstr "" #. module: base #: view:base.language.import:0 msgid "- type,name,res_id,src,value" -msgstr "" +msgstr "- type,name,res_id,src,value" #. module: base #: model:res.country,name:base.hm @@ -7538,13 +7614,15 @@ msgid "" "You try to install module '%s' that depends on module '%s'.\n" "But the latter module is not available in your system." msgstr "" +"'%s' modülünü kurmaya çalıştınız ama bağımlı olduğu '%s' \n" +"modülü sisteminizde yok." #. module: base #: view:base.language.import:0 #: model:ir.actions.act_window,name:base.action_view_base_import_language #: model:ir.ui.menu,name:base.menu_view_base_import_language msgid "Import Translation" -msgstr "" +msgstr "Çeviri Yükle" #. module: base #: field:res.partner.bank.type,field_ids:0 @@ -7595,7 +7673,7 @@ msgstr "Para Birimleri" #. module: base #: sql_constraint:res.groups:0 msgid "The name of the group must be unique !" -msgstr "" +msgstr "Grup adı tekil olmalı !" #. module: base #: view:ir.sequence:0 @@ -7610,7 +7688,7 @@ msgstr "Etkin kutucuğunu seçmeyerek bağlantıyı saklayınız." #. module: base #: model:ir.model,name:base.model_res_widget_wizard msgid "Add a widget for User" -msgstr "" +msgstr "Kullanıcı için araç ekle" #. module: base #: model:res.country,name:base.dk @@ -7631,7 +7709,7 @@ msgstr "workflow.instance" #: code:addons/orm.py:278 #, python-format msgid "Unknown attribute %s in %s " -msgstr "" +msgstr "Bilinmeyen özellik %s de %s " #. module: base #: view:res.lang:0 @@ -7642,7 +7720,7 @@ msgstr "10. %S ==> 20" #: code:addons/fields.py:106 #, python-format msgid "undefined get method !" -msgstr "" +msgstr "Tanımlanmamış get yöntemi !" #. module: base #: selection:base.language.install,lang:0 @@ -7656,6 +7734,8 @@ msgid "" "Only specify a value if you want to change the user password. This user will " "have to logout and login again!" msgstr "" +"Sadece şifreyi değiştirmek istiyorsanız bir şifre girin. İşlemden sonra " +"kullanıcı sistemden çıkıp tekrar giriş yapmalıdır!" #. module: base #: model:res.partner.title,name:base.res_partner_title_madam @@ -7675,7 +7755,7 @@ msgstr "Kontrol Panelleri" #. module: base #: help:ir.attachment,type:0 msgid "Binary File or external URL" -msgstr "" +msgstr "Çalıştırılabilir dosya ya da dış URL" #. module: base #: field:res.config.users,new_password:0 @@ -7716,6 +7796,10 @@ msgid "" "button \"Schedule for Installation\" from the form view, then click on " "\"Apply Scheduled Upgrades\" to migrate your system." msgstr "" +"Yeni özellikler, menüler, raporlar veya veriler için OpenERP içine yeni " +"modüller kurabilirsiniz. Modülleri kurmak için, ekrandan \"Kurulmak üzere " +"sıraya koy\" düğmesine basıp sonra da \"planlanmış güncellemeleri uygula\" " +"yı çalıştırın." #. module: base #: model:ir.ui.menu,name:base.menu_emails @@ -7731,7 +7815,7 @@ msgstr "Demokratik Kongo Cumhuriyeti" #. module: base #: selection:base.language.install,lang:0 msgid "Malayalam / മലയാളം" -msgstr "" +msgstr "Malayalam dili / മലയാളം" #. module: base #: view:res.request:0 @@ -7788,7 +7872,7 @@ msgstr "Hırvatça / Hrvatski Jezik" #. module: base #: field:base.language.install,overwrite:0 msgid "Overwrite Existing Terms" -msgstr "" +msgstr "Bulunan kuralların üzerine yaz" #. module: base #: help:ir.actions.server,code:0 @@ -7940,6 +8024,8 @@ msgid "" "loading a new language it becomes available as default interface language " "for users and partners." msgstr "" +"Bu sihirbaz OpenERP sistemine yeni diller eklemenize yardımcı olur. Yeni dil " +"kurulduktan sonra kullanıcılar ve iş ortakları için varsayılan dil olur." #. module: base #: field:ir.actions.server,subject:0 @@ -8050,7 +8136,7 @@ msgstr "Bulgaristan" #. module: base #: view:publisher_warranty.contract.wizard:0 msgid "Publisher warranty contract successfully registered!" -msgstr "" +msgstr "Yayıncı garanti sözleşmeniz başarıyla kaydedildi !" #. module: base #: model:res.country,name:base.ao @@ -8106,7 +8192,7 @@ msgstr "Yönetim" #. module: base #: view:base.module.update:0 msgid "Click on Update below to start the process..." -msgstr "" +msgstr "İşlemi başlatmak için aşağıdaki Güncelle tuşuna tıklayın..." #. module: base #: model:res.country,name:base.ir @@ -8117,7 +8203,7 @@ msgstr "İran" #: model:ir.actions.act_window,name:base.res_widget_user_act_window #: model:ir.ui.menu,name:base.menu_res_widget_user_act_window msgid "Widgets per User" -msgstr "" +msgstr "Her Kullanıcı için Parçacık" #. module: base #: selection:base.language.install,lang:0 @@ -8140,7 +8226,7 @@ msgstr "Sembol" #: help:res.config.users,login:0 #: help:res.users,login:0 msgid "Used to log into the system" -msgstr "" +msgstr "sisteme giriş için kullanılmış" #. module: base #: view:base.update.translations:0 @@ -8177,7 +8263,7 @@ msgstr "Şili" #: model:ir.ui.menu,name:base.menu_config_address_book #: model:ir.ui.menu,name:base.menu_procurement_management_supplier msgid "Address Book" -msgstr "" +msgstr "Adres Defteri" #. module: base #: model:ir.model,name:base.model_ir_sequence_type @@ -8260,7 +8346,7 @@ msgstr "Bilgi" #. module: base #: view:res.widget.user:0 msgid "User Widgets" -msgstr "" +msgstr "Kullanıcı Araçları" #. module: base #: view:base.module.update:0 @@ -8309,24 +8395,24 @@ msgstr "Diyagram" #. module: base #: help:multi_company.default,name:0 msgid "Name it to easily find a record" -msgstr "" +msgstr "kaydı kolayca bulabilmeniz için isimlendirin" #. module: base #: model:ir.actions.act_window,name:base.grant_menu_access #: model:ir.ui.menu,name:base.menu_grant_menu_access msgid "Menu Items" -msgstr "" +msgstr "Menü öğeleri" #. module: base #: constraint:ir.rule:0 msgid "Rules are not supported for osv_memory objects !" -msgstr "" +msgstr "osv_memory nesnesi için kurallar desteklenmiyor !" #. module: base #: model:ir.ui.menu,name:base.menu_event_association #: model:ir.ui.menu,name:base.menu_event_main msgid "Events Organisation" -msgstr "" +msgstr "Etkinlik Organizasyonu" #. module: base #: model:ir.actions.act_window,name:base.ir_sequence_actions @@ -8407,7 +8493,7 @@ msgstr "Şirket RML başlığının eklenip eklenmeyeceği" #. module: base #: help:workflow.transition,act_to:0 msgid "The destination activity." -msgstr "" +msgstr "Hedef aktivite" #. module: base #: view:base.module.update:0 @@ -8433,7 +8519,7 @@ msgstr "Danimarkaca / Dansk" #. module: base #: selection:ir.model.fields,select_level:0 msgid "Advanced Search (deprecated)" -msgstr "" +msgstr "Gelişmiş Arama (onaylanmamış)" #. module: base #: model:res.country,name:base.cx @@ -8626,7 +8712,7 @@ msgstr "XML dizin yolu" #. module: base #: selection:ir.actions.todo,restart:0 msgid "On Skip" -msgstr "" +msgstr "Atlanıldığında" #. module: base #: model:res.country,name:base.gn @@ -8648,7 +8734,7 @@ msgstr "İstemci tarafında işlemi tetikleyecek eylem veya tuş çeşidi." #: code:addons/base/ir/ir_ui_menu.py:285 #, python-format msgid "Error ! You can not create recursive Menu." -msgstr "" +msgstr "Hata ! iç içe çağırılan menü oluşturamazsınız." #. module: base #: model:ir.actions.act_window,name:base.action_publisher_warranty_contract_add_wizard @@ -8663,12 +8749,14 @@ msgid "" "3. If user belongs to several groups, the results from step 2 are combined " "with logical OR operator" msgstr "" +"Eğer kullanıcı farklı gruplara üye ise ikinci adımdan çıkan sonuçlar " +"mantıksal ya da ile birbirlerine bağlanırlar" #. module: base #: code:addons/base/publisher_warranty/publisher_warranty.py:145 #, python-format msgid "Please check your publisher warranty contract name and validity." -msgstr "" +msgstr "Lütfen yayıncı garanti sözleşme adını ve geçerliliğini kontrol edin." #. module: base #: model:res.country,name:base.sv @@ -8708,7 +8796,7 @@ msgstr "Tayland" #. module: base #: model:ir.ui.menu,name:base.menu_crm_config_lead msgid "Leads & Opportunities" -msgstr "" +msgstr "Olası müşteriler & İş Fırsatları" #. module: base #: selection:base.language.install,lang:0 @@ -8751,7 +8839,7 @@ msgstr "ir.actions.act_window" #. module: base #: field:ir.rule,perm_create:0 msgid "Apply For Create" -msgstr "" +msgstr "Oluşturmak için başvur" #. module: base #: model:res.country,name:base.vi @@ -8777,6 +8865,10 @@ msgid "" "be assigned to specific groups in order to make them accessible to some " "users within the system." msgstr "" +"OpenERP sistem menüsünde gözüken ve bulunan öğeleri yönetip " +"özelleştirebilirsiniz. Bir öğeyi satır başındaki kutuyu tıklayarak ve çıkan " +"düğmeden silebilirsiniz. Öğeleri belirli gruplara atayarak sadece bazı " +"kullanıcılara erişim verebilirsiniz." #. module: base #: field:ir.ui.view,field_parent:0 @@ -8817,7 +8909,7 @@ msgstr "Görünüm Kendiliğinden Yüklenmesi" #: code:addons/base/ir/ir_model.py:232 #, python-format msgid "You cannot remove the field '%s' !" -msgstr "" +msgstr "'%s' alanını çıkaramazsınız !" #. module: base #: field:ir.exports,resource:0 @@ -8845,7 +8937,7 @@ msgstr "Görüntü Sıralaması" #: code:addons/base/module/wizard/base_module_upgrade.py:95 #, python-format msgid "Unmet dependency !" -msgstr "" +msgstr "karşınlanmamış bağımlılık !" #. module: base #: view:base.language.import:0 @@ -8853,6 +8945,8 @@ msgid "" "Supported file formats: *.csv (Comma-separated values) or *.po (GetText " "Portable Objects)" msgstr "" +"Desteklenen dosya formatları: *.csv (virgülle-ayrılmış değerler) ya da *.po " +"(gettext taşınabilir nesneler)" #. module: base #: code:addons/base/ir/ir_model.py:487 @@ -8861,6 +8955,8 @@ msgid "" "You can not delete this document (%s) ! Be sure your user belongs to one of " "these groups: %s." msgstr "" +"Bu dökümanı (%s) silemezsiniz ! Kullanıcınızın şu gruplardan birine üye " +"olduğundan emin olun: %s" #. module: base #: model:ir.model,name:base.model_base_module_configuration @@ -8979,6 +9075,9 @@ msgid "" "categories have a hierarchy structure: a partner belonging to a category " "also belong to his parent category." msgstr "" +"İş Ortağı kategorilerini iş ortaklarınızı daha iyi sınıflandırmak, takip " +"edip analiz etmek için kullanabilirsiniz. Bir iş ortağı bir çok kategoriye " +"üye olabilir ve kategorilerin ağaç yapısında oluşturulabilirler." #. module: base #: model:res.country,name:base.az @@ -9073,6 +9172,10 @@ msgid "" "simplified interface, which has less features but is easier. You can always " "switch later from the user preferences." msgstr "" +"Eğer OpenERP yi ilk defa kullanıyorsanız size şiddetle basitleştirilmiş " +"görünümü kullanmanızı öneririz. İçinde daha az özellik vardır ama daha " +"kolaydır. Dilediğiniz her zaman kullanıcı seçeneklerinden gelişmiş görünüme " +"geçebilirsiniz." #. module: base #: model:ir.model,name:base.model_res_country @@ -9103,6 +9206,8 @@ msgid "" "1. Global rules are combined together with a logical AND operator, and with " "the result of the following steps" msgstr "" +"Global kırallar mantıksal VE bağlacı ile ve takip eden adımların sonucu ile " +"birleştirilirler" #. module: base #: field:res.partner.category,name:0 @@ -9202,7 +9307,7 @@ msgstr "Bölük Kip" #. module: base #: view:base.module.upgrade:0 msgid "Note that this operation might take a few minutes." -msgstr "" +msgstr "Bu işlem birkaç dakika sürebilir." #. module: base #: model:ir.ui.menu,name:base.menu_localisation @@ -9328,7 +9433,7 @@ msgstr "Şirket Değişikliği Uyarısı" #. module: base #: model:ir.actions.act_window,name:base.action_res_widget_wizard msgid "Homepage Widgets Management" -msgstr "" +msgstr "Anasayfa Araçları Yönetimi" #. module: base #: field:workflow,osv:0 @@ -9339,7 +9444,7 @@ msgstr "Kayna Nesne" #. module: base #: help:ir.sequence,number_increment:0 msgid "The next number of the sequence will be incremented by this number" -msgstr "" +msgstr "Bir sonraki otomatik sayı bu değer kadarki artışla oluşturulacak." #. module: base #: field:ir.cron,function:0 @@ -9351,7 +9456,7 @@ msgstr "Görev" #. module: base #: view:res.widget:0 msgid "Search Widget" -msgstr "" +msgstr "Arama Aracı" #. module: base #: selection:ir.actions.todo,restart:0 diff --git a/openerp/addons/base/i18n/vi.po b/openerp/addons/base/i18n/vi.po index e6ede7f00b4..f1e0f99bce9 100644 --- a/openerp/addons/base/i18n/vi.po +++ b/openerp/addons/base/i18n/vi.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2011-05-04 18:57+0000\n" +"PO-Revision-Date: 2011-05-29 23:23+0000\n" "Last-Translator: Phong Nguyen-Thanh \n" "Language-Team: Vietnamese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-05-05 06:00+0000\n" +"X-Launchpad-Export-Date: 2011-05-31 04:47+0000\n" "X-Generator: Launchpad (build 12959)\n" #. module: base @@ -24,7 +24,7 @@ msgstr "" #: field:ir.rule,domain_force:0 #: field:res.partner.title,domain:0 msgid "Domain" -msgstr "Vùng" +msgstr "Miền" #. module: base #: model:res.country,name:base.sh @@ -48,6 +48,8 @@ msgid "" "The second argument of the many2many field %s must be a SQL table !You used " "%s, which is not a valid SQL table name." msgstr "" +"Đối số thứ hai trong quan hệ nhiều-nhiều %s phải là một bảng SQL ! Bạn đã " +"dùng %s, đó không phải là một tên bảng SQL hợp lệ." #. module: base #: view:ir.values:0 @@ -104,7 +106,7 @@ msgstr "Quy trình công việc cho" #. module: base #: field:ir.actions.act_window,display_menu_tip:0 msgid "Display Menu Tips" -msgstr "" +msgstr "Hiện chỉ dẫn trình đơn" #. module: base #: view:ir.module.module:0 @@ -128,6 +130,9 @@ msgid "" "specified as a Python expression defining a list of triplets. For example: " "[('color','=','red')]" msgstr "" +"Miền tùy chọn dùng để giới hạn các giá trị có thể đối với các trường quan " +"hệ, được chỉ định bởi một biểu thức Python định nghĩa một danh sách của các " +"bộ ba. Ví dụ: [('màu'='đỏ')]" #. module: base #: field:res.partner,ref:0 @@ -152,8 +157,9 @@ msgid "" "Properties of base fields cannot be altered in this manner! Please modify " "them through Python code, preferably through a custom addon!" msgstr "" -"các thuộc tính cơ bản không thể thay đổi theo cách này ! hãy thay đổi chúng " -"thông qua Python mã, tốt hơn thông qua một addon tùy chỉnh!" +"Các thuộc tính của trường cơ bản không thể thay đổi theo cách này ! Vui lòng " +"thay đổi chúng thông qua mã Python, tốt nhất là thông qua một addon tùy " +"chỉnh!" #. module: base #: code:addons/osv.py:133 @@ -229,7 +235,7 @@ msgstr "mới" #. module: base #: field:ir.actions.report.xml,multi:0 msgid "On multiple doc." -msgstr "" +msgstr "Trong nhiều tài liệu." #. module: base #: field:ir.module.category,module_nr:0 @@ -239,7 +245,7 @@ msgstr "Số lượng mô-đun" #. module: base #: help:multi_company.default,company_dest_id:0 msgid "Company to store the current record" -msgstr "" +msgstr "Công ty lưu trữ bản ghi hiện tại" #. module: base #: field:res.partner.bank.type.field,size:0 @@ -258,6 +264,8 @@ msgid "" "Save this document to a %s file and edit it with a specific software or a " "text editor. The file encoding is UTF-8." msgstr "" +"Lưu tài liệu này thành tập tin %s và chỉnh sửa bằng một phần mềm phù hợp " +"hoặc trình soạnh thảo văn bản. Tập tin mã hóa dạng UTF-8" #. module: base #: sql_constraint:res.lang:0 @@ -393,12 +401,14 @@ msgid "" "If you check this, then the second time the user prints with same attachment " "name, it returns the previous report." msgstr "" +"Nếu bạn đánh dấu mục này, khi người sử dụng in lần thứ hai với cùng tên tập " +"tin đính kèm, hệ thống sẽ trả về báo cáo trước đó." #. module: base #: code:addons/orm.py:904 #, python-format msgid "The read method is not implemented on this object !" -msgstr "" +msgstr "Phương thức đọc không được hiện thực trên đối tượng này !" #. module: base #: help:res.lang,iso_code:0 @@ -414,7 +424,7 @@ msgstr "Hệ thống của bạn sẽ được cập nhật" #: field:ir.actions.todo,note:0 #: selection:ir.property,type:0 msgid "Text" -msgstr "Chữ" +msgstr "Văn bản" #. module: base #: field:res.country,name:0 @@ -435,7 +445,7 @@ msgstr "Lên kế hoạch nâng cấp" #: code:addons/orm.py:838 #, python-format msgid "Key/value '%s' not found in selection field '%s'" -msgstr "" +msgstr "Khóa/giá trị '%s' không tìm thấy trong trường được chọn '%s'" #. module: base #: help:res.country,code:0 @@ -466,6 +476,7 @@ msgstr "Chưa được dịch" msgid "" "Context dictionary as Python expression, empty by default (Default: {})" msgstr "" +"Từ điển bối cảnh là biểu thức Python, mặc định để trống (Mặc định: {})" #. module: base #: model:ir.actions.act_window,name:base.ir_action_wizard @@ -477,13 +488,13 @@ msgstr "" #. module: base #: model:res.partner.category,name:base.res_partner_category_miscellaneoussuppliers0 msgid "Miscellaneous Suppliers" -msgstr "" +msgstr "Các nhà cung cấp khác" #. module: base #: code:addons/base/ir/ir_model.py:255 #, python-format msgid "Custom fields must have a name that starts with 'x_' !" -msgstr "" +msgstr "Các trường được tùy chỉnh phải có tên bắt đầu bằng 'x_' !" #. module: base #: help:ir.actions.server,action_id:0 @@ -503,13 +514,13 @@ msgstr "Trích xuất hoàn tất" #. module: base #: view:ir.model:0 msgid "Model Description" -msgstr "" +msgstr "Mô tả mô hình" #. module: base #: help:ir.actions.act_window,src_model:0 msgid "" "Optional model name of the objects on which this action should be visible" -msgstr "" +msgstr "Tùy chọn tên mô hình của đối tượng cho phép hiện hành động này" #. module: base #: field:workflow.transition,trigger_expr_id:0 @@ -571,12 +582,12 @@ msgstr "" #. module: base #: field:res.partner,title:0 msgid "Partner Form" -msgstr "" +msgstr "Mẫu đối tác" #. module: base #: selection:base.language.install,lang:0 msgid "Swedish / svenska" -msgstr "" +msgstr "Tiếng Thụy điển" #. module: base #: model:res.country,name:base.rs @@ -635,6 +646,7 @@ msgstr "Pa-pu-a Niu Ghi-nê" #: help:ir.actions.report.xml,report_type:0 msgid "Report Type, e.g. pdf, html, raw, sxw, odt, html2html, mako2html, ..." msgstr "" +"Loại Báo cáo, ví dụ pdf, html, raw, sxw, odt, html2html, mako2html, ..." #. module: base #: model:res.partner.category,name:base.res_partner_category_4 @@ -736,7 +748,7 @@ msgstr "" #: code:addons/orm.py:1043 #, python-format msgid "The unlink method is not implemented on this object !" -msgstr "" +msgstr "Phương thức unlink không được hiện thực trên đối tượng này !" #. module: base #: model:ir.actions.act_window,name:base.act_menu_create @@ -779,7 +791,7 @@ msgstr "ir.config_parameter" #. module: base #: selection:base.language.export,format:0 msgid "TGZ Archive" -msgstr "" +msgstr "Lưu trữ TGZ" #. module: base #: view:res.lang:0 @@ -1678,7 +1690,8 @@ msgstr "" msgid "" "The Object name must start with x_ and not contain any special character !" msgstr "" -"The Object name must start with x_ and not contain any special character !" +"Tên đối tượng phải bắt đầu bằng x_ và không bao gồm bất kỳ ký tự đặc biệt " +"nào!" #. module: base #: field:ir.actions.configuration.wizard,note:0 @@ -5705,7 +5718,7 @@ msgstr "Tự chọn" #. module: base #: view:res.request:0 msgid "Current" -msgstr "Current" +msgstr "Hiện hành" #. module: base #: model:res.partner.category,name:base.res_partner_category_9 @@ -6258,7 +6271,7 @@ msgstr "" #: field:res.partner.address,city:0 #: field:res.partner.bank,city:0 msgid "City" -msgstr "Thành phố/Quận" +msgstr "TP thuộc Tỉnh/Quận/Huyện" #. module: base #: model:res.country,name:base.qa @@ -7083,7 +7096,7 @@ msgstr "" #: model:ir.actions.act_window,name:base.action_country_state #: model:ir.ui.menu,name:base.menu_country_state_partner msgid "Fed. States" -msgstr "Bang/Tỉnh/TP" +msgstr "Tiểu bang/TPTƯ/Tỉnh" #. module: base #: view:ir.model:0 @@ -7914,17 +7927,17 @@ msgstr "" #: field:res.currency,name:0 #: field:res.currency.rate,currency_id:0 msgid "Currency" -msgstr "Tiền tệ" +msgstr "Loại tiền tệ" #. module: base #: field:res.partner.canal,name:0 msgid "Channel Name" -msgstr "" +msgstr "Tên Kênh" #. module: base #: view:res.lang:0 msgid "5. %y, %Y ==> 08, 2008" -msgstr "" +msgstr "5. %y, %Y ==> 08, 2008" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_ltd @@ -7935,12 +7948,12 @@ msgstr "" #: field:ir.values,res_id:0 #: field:res.log,res_id:0 msgid "Object ID" -msgstr "" +msgstr "Mã Đối tượng" #. module: base #: view:res.company:0 msgid "Landscape" -msgstr "" +msgstr "Khổ ngang" #. module: base #: model:ir.ui.menu,name:base.menu_administration @@ -14813,3 +14826,6 @@ msgstr "Tiếng Nga" #~ msgid "Corporation" #~ msgstr "Công ty" + +#~ msgid "Ltd." +#~ msgstr "TNHH" diff --git a/openerp/addons/base/ir/ir.xml b/openerp/addons/base/ir/ir.xml index 21dfc28b50b..8647063a450 100644 --- a/openerp/addons/base/ir/ir.xml +++ b/openerp/addons/base/ir/ir.xml @@ -1440,7 +1440,8 @@ - + diff --git a/openerp/addons/base/ir/ir_cron.py b/openerp/addons/base/ir/ir_cron.py index 2ab8819792a..6bde5c4b468 100644 --- a/openerp/addons/base/ir/ir_cron.py +++ b/openerp/addons/base/ir/ir_cron.py @@ -20,6 +20,7 @@ ############################################################################## import time +import logging from datetime import datetime from dateutil.relativedelta import relativedelta import netsvc @@ -85,16 +86,22 @@ class ir_cron(osv.osv, netsvc.Agent): (_check_args, 'Invalid arguments', ['args']), ] - def _callback(self, cr, uid, model, func, args): + def _handle_callback_exception(self, cr, uid, model, func, args, job_id, job_exception): + cr.rollback() + logger=logging.getLogger('cron') + logger.exception("Call of self.pool.get('%s').%s(cr, uid, *%r) failed in Job %s" % (model, func, args, job_id)) + + def _callback(self, cr, uid, model, func, args, job_id): args = str2tuple(args) m = self.pool.get(model) if m and hasattr(m, func): f = getattr(m, func) try: + netsvc.log('cron', (cr.dbname,uid,'*',model,func)+tuple(args), channel=logging.DEBUG, + depth=(None if self._logger.isEnabledFor(logging.DEBUG_RPC_ANSWER) else 1), fn='object.execute') f(cr, uid, *args) except Exception, e: - cr.rollback() - self._logger.exception("Job call of self.pool.get('%s').%s(cr, uid, *%r) failed" % (model, func, args)) + self._handle_callback_exception(cr, uid, model, func, args, job_id, e) def _poolJobs(self, db_name, check=False): @@ -116,7 +123,7 @@ class ir_cron(osv.osv, netsvc.Agent): if numbercall > 0: numbercall -= 1 if not ok or job['doall']: - self._callback(cr, job['user_id'], job['model'], job['function'], job['args']) + self._callback(cr, job['user_id'], job['model'], job['function'], job['args'], job['id']) if numbercall: nextcall += _intervalTypes[job['interval_type']](job['interval_number']) ok = True diff --git a/openerp/addons/base/ir/ir_model.py b/openerp/addons/base/ir/ir_model.py index 772163b9717..244fb7e9e8a 100644 --- a/openerp/addons/base/ir/ir_model.py +++ b/openerp/addons/base/ir/ir_model.py @@ -24,7 +24,6 @@ import time from operator import itemgetter from osv import fields,osv -import ir import netsvc from osv.orm import except_orm, browse_record import tools @@ -163,7 +162,7 @@ class ir_model(osv.osv): pass x_custom_model._name = model x_custom_model._module = False - a = x_custom_model.createInstance(self.pool, '', cr) + a = x_custom_model.createInstance(self.pool, cr) if (not a._columns) or ('x_name' in a._columns.keys()): x_name = 'x_name' else: @@ -753,7 +752,8 @@ class ir_model_data(osv.osv): cr.execute('select * from ir_values where model=%s and key=%s and name=%s'+where,(model, key, name)) res = cr.fetchone() if not res: - res = ir.ir_set(cr, uid, key, key2, name, models, value, replace, isobject, meta) + ir_values_obj = pooler.get_pool(cr.dbname).get('ir.values') + res = ir_values_obj.set(cr, uid, key, key2, name, models, value, replace, isobject, meta) elif xml_id: cr.execute('UPDATE ir_values set value=%s WHERE model=%s and key=%s and name=%s'+where,(value, model, key, name)) return True diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index ed9a5f48158..d67f0c247d1 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -3,6 +3,7 @@ # # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). +# Copyright (C) 2010-2011 OpenERP SA (). # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -23,7 +24,7 @@ import base64 import re import tools -import addons +import openerp.modules from osv import fields, osv from tools.translate import _ @@ -176,13 +177,13 @@ class ir_ui_menu(osv.osv): def _action(self, cursor, user, ids, name, arg, context=None): res = {} - values_obj = self.pool.get('ir.values') - value_ids = values_obj.search(cursor, user, [ + ir_values_obj = self.pool.get('ir.values') + value_ids = ir_values_obj.search(cursor, user, [ ('model', '=', self._name), ('key', '=', 'action'), ('key2', '=', 'tree_but_open'), ('res_id', 'in', ids)], context=context) values_action = {} - for value in values_obj.browse(cursor, user, value_ids, context=context): + for value in ir_values_obj.browse(cursor, user, value_ids, context=context): values_action[value.res_id] = value.value for menu_id in ids: res[menu_id] = values_action.get(menu_id, False) @@ -194,16 +195,16 @@ class ir_ui_menu(osv.osv): ctx = context.copy() if self.CONCURRENCY_CHECK_FIELD in ctx: del ctx[self.CONCURRENCY_CHECK_FIELD] - values_obj = self.pool.get('ir.values') - values_ids = values_obj.search(cursor, user, [ + ir_values_obj = self.pool.get('ir.values') + values_ids = ir_values_obj.search(cursor, user, [ ('model', '=', self._name), ('key', '=', 'action'), ('key2', '=', 'tree_but_open'), ('res_id', '=', menu_id)], context=context) if values_ids: - values_obj.write(cursor, user, values_ids, {'value': value}, + ir_values_obj.write(cursor, user, values_ids, {'value': value}, context=ctx) else: - values_obj.create(cursor, user, { + ir_values_obj.create(cursor, user, { 'name': 'Menuitem', 'model': self._name, 'value': value, @@ -225,8 +226,10 @@ class ir_ui_menu(osv.osv): return {'type': {'icon_pict': 'picture'}, 'value': {'icon_pict': ('stock', (icon,'ICON_SIZE_MENU'))}} def read_image(self, path): + if not path: + return False path_info = path.split(',') - icon_path = addons.get_module_resource(path_info[0],path_info[1]) + icon_path = openerp.modules.get_module_resource(path_info[0],path_info[1]) icon_image = False if icon_path: try: @@ -236,17 +239,14 @@ class ir_ui_menu(osv.osv): icon_file.close() return icon_image - def _get_image_icon(self, cr, uid, ids, name, args, context=None): + def _get_image_icon(self, cr, uid, ids, names, args, context=None): res = {} for menu in self.browse(cr, uid, ids, context=context): - res[menu.id] = { - 'web_icon_data': False, - 'web_icon_hover_data': False, - } - if menu.web_icon_hover: - res[menu.id]['web_icon_hover_data'] = self.read_image(menu.web_icon_hover) - if menu.web_icon: - res[menu.id]['web_icon_data'] = self.read_image(menu.web_icon) + res[menu.id] = r = {} + for fn in names: + fn_src = fn[:-5] # remove _data + r[fn] = self.read_image(menu[fn_src]) + return res _columns = { diff --git a/openerp/addons/base/ir/ir_values.py b/openerp/addons/base/ir/ir_values.py index 79b1b5e338c..b2a203a0e1e 100644 --- a/openerp/addons/base/ir/ir_values.py +++ b/openerp/addons/base/ir/ir_values.py @@ -144,7 +144,9 @@ class ir_values(osv.osv): ids_res.append(self.create(cr, uid, vals)) return ids_res - def get(self, cr, uid, key, key2, models, meta=False, context={}, res_id_req=False, without_user=True, key2_req=True): + def get(self, cr, uid, key, key2, models, meta=False, context=None, res_id_req=False, without_user=True, key2_req=True): + if context is None: + context = {} result = [] for m in models: if isinstance(m, (list, tuple)): @@ -172,8 +174,15 @@ class ir_values(osv.osv): else: where.append('res_id=%s') params.append(res_id) - - where.append('(user_id=%s or (user_id IS NULL)) order by id') + order = 'id' + if key == 'default': + # Make sure we get first the values for specific users, then + # the global values. The map/filter below will retain the first + # value for any given name. The 'order by' will put the null + # values last; this may be postgres specific (it is the + # behavior in postgres at least since 8.2). + order = 'user_id' + where.append('(user_id=%s or (user_id IS NULL)) order by '+ order) params.append(uid) clause = ' and '.join(where) cr.execute('select id,name,value,object,meta, key from ir_values where ' + clause, params) diff --git a/openerp/addons/base/module/module.py b/openerp/addons/base/module/module.py index 2e276433e63..51fdb224918 100644 --- a/openerp/addons/base/module/module.py +++ b/openerp/addons/base/module/module.py @@ -30,7 +30,7 @@ import urllib import zipfile import zipimport -import addons +import openerp.modules as addons import pooler import release import tools @@ -79,8 +79,7 @@ class module(osv.osv): info = {} try: info = addons.load_information_from_description_file(name) - if 'version' in info: - info['version'] = release.major_version + '.' + info['version'] + info['version'] = release.major_version + '.' + info['version'] except Exception: cls.__logger.debug('Error when trying to fetch informations for ' 'module %s', name, exc_info=True) @@ -479,7 +478,9 @@ class module(osv.osv): categs = categs[1:] self.write(cr, uid, [mod_browse.id], {'category_id': p_id}) - def update_translations(self, cr, uid, ids, filter_lang=None, context={}): + def update_translations(self, cr, uid, ids, filter_lang=None, context=None): + if context is None: + context = {} logger = logging.getLogger('i18n') if not filter_lang: pool = pooler.get_pool(cr.dbname) diff --git a/openerp/addons/base/res/res_currency.py b/openerp/addons/base/res/res_currency.py index caa97ec0339..ea5dfbc6057 100644 --- a/openerp/addons/base/res/res_currency.py +++ b/openerp/addons/base/res/res_currency.py @@ -21,7 +21,6 @@ import time import netsvc from osv import fields, osv -import ir from tools.misc import currency from tools.translate import _ diff --git a/openerp/addons/base/res/res_lang.py b/openerp/addons/base/res/res_lang.py index f59127318ec..600f31aead2 100644 --- a/openerp/addons/base/res/res_lang.py +++ b/openerp/addons/base/res/res_lang.py @@ -21,6 +21,7 @@ import locale import logging +import re from osv import fields, osv from locale import localeconv @@ -36,16 +37,25 @@ class lang(osv.osv): _disallowed_datetime_patterns.remove('%y') # this one is in fact allowed, just not good practice def install_lang(self, cr, uid, **args): + """ + + This method is called from openerp/addons/base/base_data.xml to load + some language and set it as the default for every partners. The + language is set via tools.config by the RPC 'create' method on the + 'db' object. This is a fragile solution and something else should be + found. + + """ lang = tools.config.get('lang') if not lang: return False lang_ids = self.search(cr, uid, [('code','=', lang)]) - values_obj = self.pool.get('ir.values') + ir_values_obj = self.pool.get('ir.values') if not lang_ids: lang_id = self.load_lang(cr, uid, lang) - default_value = values_obj.get(cr, uid, 'default', False, 'res.partner') + default_value = ir_values_obj.get(cr, uid, 'default', False, ['res.partner']) if not default_value: - values_obj.set(cr, uid, 'default', False, 'lang', ['res.partner'], lang) + ir_values_obj.set(cr, uid, 'default', False, 'lang', ['res.partner'], lang) return True def load_lang(self, cr, uid, lang, lang_name=None): @@ -181,46 +191,6 @@ class lang(osv.osv): trans_obj.unlink(cr, uid, trans_ids, context=context) return super(lang, self).unlink(cr, uid, ids, context=context) - def _group(self, cr, uid, ids, s, monetary=False, grouping=False, thousands_sep=''): - grouping = eval(grouping) - - if not grouping: - return (s, 0) - - result = "" - seps = 0 - spaces = "" - - if s[-1] == ' ': - sp = s.find(' ') - spaces = s[sp:] - s = s[:sp] - - while s and grouping: - # if grouping is -1, we are done - if grouping[0] == -1: - break - # 0: re-use last group ad infinitum - elif grouping[0] != 0: - #process last group - group = grouping[0] - grouping = grouping[1:] - if result: - result = s[-group:] + thousands_sep + result - seps += 1 - else: - result = s[-group:] - s = s[:-group] - if s and s[-1] not in "0123456789": - # the leading string is only spaces and signs - return s + result + spaces, seps - if not result: - return s + spaces, seps - if s: - result = s + thousands_sep + result - seps += 1 - return result + spaces, seps - def format(self, cr, uid, ids, percent, value, grouping=False, monetary=False): """ Format() will return the language-specific output for float values""" @@ -228,6 +198,7 @@ class lang(osv.osv): raise ValueError("format() must be given exactly one %char format specifier") lang_grouping, thousands_sep, decimal_point = self._lang_data_get(cr, uid, ids[0], monetary) + eval_lang_grouping = eval(lang_grouping) formatted = percent % value # floats and decimal ints need special action! @@ -236,7 +207,7 @@ class lang(osv.osv): parts = formatted.split('.') if grouping: - parts[0], seps = self._group(cr,uid,ids,parts[0], monetary=monetary, grouping=lang_grouping, thousands_sep=thousands_sep) + parts[0], seps = intersperse(parts[0], eval_lang_grouping, thousands_sep) formatted = decimal_point.join(parts) while seps: @@ -246,7 +217,7 @@ class lang(osv.osv): seps -= 1 elif percent[-1] in 'diu': if grouping: - formatted = self._group(cr,uid,ids,formatted, monetary=monetary, grouping=lang_grouping, thousands_sep=thousands_sep)[0] + formatted = intersperse(formatted, eval_lang_grouping, thousands_sep)[0] return formatted @@ -256,5 +227,139 @@ class lang(osv.osv): lang() +def original_group(s, grouping, thousands_sep=''): + + if not grouping: + return (s, 0) + + result = "" + seps = 0 + spaces = "" + + if s[-1] == ' ': + sp = s.find(' ') + spaces = s[sp:] + s = s[:sp] + + while s and grouping: + # if grouping is -1, we are done + if grouping[0] == -1: + break + # 0: re-use last group ad infinitum + elif grouping[0] != 0: + #process last group + group = grouping[0] + grouping = grouping[1:] + if result: + result = s[-group:] + thousands_sep + result + seps += 1 + else: + result = s[-group:] + s = s[:-group] + if s and s[-1] not in "0123456789": + # the leading string is only spaces and signs + return s + result + spaces, seps + if not result: + return s + spaces, seps + if s: + result = s + thousands_sep + result + seps += 1 + return result + spaces, seps + +def split(l, counts): + """ + + >>> split("hello world", []) + ['hello world'] + >>> split("hello world", [1]) + ['h', 'ello world'] + >>> split("hello world", [2]) + ['he', 'llo world'] + >>> split("hello world", [2,3]) + ['he', 'llo', ' world'] + >>> split("hello world", [2,3,0]) + ['he', 'llo', ' wo', 'rld'] + >>> split("hello world", [2,-1,3]) + ['he', 'llo world'] + + """ + res = [] + saved_count = len(l) # count to use when encoutering a zero + for count in counts: + if count == -1: + break + if count == 0: + while l: + res.append(l[:saved_count]) + l = l[saved_count:] + break + res.append(l[:count]) + l = l[count:] + saved_count = count + if l: + res.append(l) + return res + +intersperse_pat = re.compile('([^0-9]*)([^ ]*)(.*)') + +def intersperse(string, counts, separator=''): + """ + + See the asserts below for examples. + + """ + left, rest, right = intersperse_pat.match(string).groups() + def reverse(s): return s[::-1] + splits = split(reverse(rest), counts) + res = separator.join(map(reverse, reverse(splits))) + return left + res + right, len(splits) > 0 and len(splits) -1 or 0 + +# TODO rewrite this with a unit test library +def _group_examples(): + for g in [original_group, intersperse]: + # print "asserts on", g.func_name + assert g("", []) == ("", 0) + assert g("0", []) == ("0", 0) + assert g("012", []) == ("012", 0) + assert g("1", []) == ("1", 0) + assert g("12", []) == ("12", 0) + assert g("123", []) == ("123", 0) + assert g("1234", []) == ("1234", 0) + assert g("123456789", []) == ("123456789", 0) + assert g("&ab%#@1", []) == ("&ab%#@1", 0) + + assert g("0", []) == ("0", 0) + assert g("0", [1]) == ("0", 0) + assert g("0", [2]) == ("0", 0) + assert g("0", [200]) == ("0", 0) + + # breaks original_group: + if g.func_name == 'intersperse': + assert g("12345678", [0], '.') == ('12345678', 0) + assert g("", [1], '.') == ('', 0) + assert g("12345678", [1], '.') == ('1234567.8', 1) + assert g("12345678", [1], '.') == ('1234567.8', 1) + assert g("12345678", [2], '.') == ('123456.78', 1) + assert g("12345678", [2,1], '.') == ('12345.6.78', 2) + assert g("12345678", [2,0], '.') == ('12.34.56.78', 3) + assert g("12345678", [-1,2], '.') == ('12345678', 0) + assert g("12345678", [2,-1], '.') == ('123456.78', 1) + assert g("12345678", [2,0,1], '.') == ('12.34.56.78', 3) + assert g("12345678", [2,0,0], '.') == ('12.34.56.78', 3) + assert g("12345678", [2,0,-1], '.') == ('12.34.56.78', 3) + + + assert original_group("abc1234567xy", [2], '.') == ('abc1234567.xy', 1) + assert original_group("abc1234567xy8", [2], '.') == ('abc1234567xy8', 0) # difference here... + assert original_group("abc12", [3], '.') == ('abc12', 0) + assert original_group("abc12", [2], '.') == ('abc12', 0) + assert original_group("abc12", [1], '.') == ('abc1.2', 1) + + assert intersperse("abc1234567xy", [2], '.') == ('abc1234567.xy', 1) + assert intersperse("abc1234567xy8", [2], '.') == ('abc1234567x.y8', 1) # ... w.r.t. here. + assert intersperse("abc12", [3], '.') == ('abc12', 0) + assert intersperse("abc12", [2], '.') == ('abc12', 0) + assert intersperse("abc12", [1], '.') == ('abc1.2', 1) + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/addons/base/res/res_user.py b/openerp/addons/base/res/res_user.py index 2ef2bb8d4d0..8a76ba9a6f4 100644 --- a/openerp/addons/base/res/res_user.py +++ b/openerp/addons/base/res/res_user.py @@ -127,6 +127,8 @@ class users(osv.osv): def send_welcome_email(self, cr, uid, id, context=None): logger= netsvc.Logger() user = self.pool.get('res.users').read(cr, uid, id, context=context) + if not user.get('email'): + return False if not tools.config.get('smtp_server'): logger.notifyChannel('mails', netsvc.LOG_WARNING, _('"smtp_server" needs to be set to send mails to users')) @@ -136,8 +138,6 @@ class users(osv.osv): _('"email_from" needs to be set to send welcome mails ' 'to users')) return False - if not user.get('email'): - return False return tools.email_send(email_from=None, email_to=[user['email']], subject=self.get_welcome_mail_subject( @@ -206,6 +206,9 @@ class users(osv.osv): raise osv.except_osv(_('Operation Canceled'), _('Please use the change password wizard (in User Preferences or User menu) to change your own password.')) self.write(cr, uid, id, {'password': value}) + def _get_password(self, cr, uid, ids, arg, karg, context=None): + return dict.fromkeys(ids, '') + _columns = { 'name': fields.char('User Name', size=64, required=True, select=True, help="The new user's real name, used for searching" @@ -213,7 +216,7 @@ class users(osv.osv): 'login': fields.char('Login', size=64, required=True, help="Used to log into the system"), 'password': fields.char('Password', size=64, invisible=True, help="Keep empty if you don't want the user to be able to connect on the system."), - 'new_password': fields.function(lambda *a:'', method=True, type='char', size=64, + 'new_password': fields.function(_get_password, method=True, type='char', size=64, fnct_inv=_set_new_password, string='Change password', help="Only specify a value if you want to change the user password. " "This user will have to logout and login again!"), @@ -263,7 +266,6 @@ class users(osv.osv): if 'password' in o and ( 'id' not in o or o['id'] != uid ): o['password'] = '********' return o - result = super(users, self).read(cr, uid, ids, fields, context, load) canwrite = self.pool.get('ir.model.access').check(cr, uid, 'res.users', 'write', raise_exception=False) if not canwrite: @@ -535,15 +537,19 @@ class config_users(osv.osv_memory): 'email': base_data['email'], 'partner_id': partner_id,}, context) - user_data = dict( - base_data, - signature=self._generate_signature( - cr, base_data['name'], base_data['email'], context=context), - address_id=address, - ) + # Change the read many2one values from (id,name) to id, and + # the one2many from ids to (6,0,ids). + base_data.update({'menu_id' : base_data.get('menu_id') and base_data['menu_id'][0], + 'company_id' : base_data.get('company_id') and base_data['company_id'][0], + 'action_id' : base_data.get('action_id') and base_data['action_id'][0], + 'signature' : self._generate_signature(cr, base_data['name'], base_data['email'], context=context), + 'address_id' : address, + 'groups_id' : [(6,0, base_data.get('groups_id',[]))], + }) new_user = self.pool.get('res.users').create( - cr, uid, user_data, context) + cr, uid, base_data, context) self.send_welcome_email(cr, uid, new_user, context=context) + def execute(self, cr, uid, ids, context=None): 'Do nothing on execution, just launch the next action/todo' pass diff --git a/openerp/addons/base/res/test/res_lang.py b/openerp/addons/base/res/test/res_lang.py new file mode 100644 index 00000000000..9272f1142ea --- /dev/null +++ b/openerp/addons/base/res/test/res_lang.py @@ -0,0 +1,12 @@ +import sys +import openerp + +# TODO this loop will be exposed as open_openerp_namespace() +# once trunk-cleaning-vmt is merged. +for k, v in list(sys.modules.items()): + if k.startswith('openerp.') and sys.modules.get(k[8:]) is None: + sys.modules[k[8:]] = v + +import openerp.addons.base.res.res_lang as res_lang +res_lang._group_examples() + diff --git a/openerp/addons/base/test/test_config_users.yml b/openerp/addons/base/test/test_config_users.yml new file mode 100644 index 00000000000..17df694c313 --- /dev/null +++ b/openerp/addons/base/test/test_config_users.yml @@ -0,0 +1,11 @@ +- + I Create "test" user using configuration wizard. +- + !python {model: res.config.users}: | + defaults = { + 'name' : 'test1', + 'login' : 'test1', + 'password' : 'test', + } + wizard_id = self.create(cr, uid, defaults) + self.action_add(cr, uid, [wizard_id], context) diff --git a/openerp/addons/base/test/test_ir_values.yml b/openerp/addons/base/test/test_ir_values.yml new file mode 100644 index 00000000000..b4c08db31ff --- /dev/null +++ b/openerp/addons/base/test/test_ir_values.yml @@ -0,0 +1,25 @@ +- + Create some default value for some (non-existing) model, for all users. +- + !python {model: ir.values }: | + self.set(cr, uid, 'default', False, 'my_test_ir_value',['unexisting_model'], 'global value') +- + Retrieve it. +- + !python {model: ir.values }: | + # d is a list of triple (id, name, value) + d = self.get(cr, uid, 'default', False, ['unexisting_model']) + assert d[0][1] == u'my_test_ir_value', "Can't retrieve the created default value." + assert d[0][2] == 'global value', "Can't retrieve the created default value." +- + Do it again but for a specific user. +- + !python {model: ir.values }: | + self.set(cr, uid, 'default', False, 'my_test_ir_value',['unexisting_model'], 'specific value', preserve_user=True) +- + Retrieve it and check it is the one for the current user. +- + !python {model: ir.values }: | + d = self.get(cr, uid, 'default', False, ['unexisting_model']) + assert d[0][1] == u'my_test_ir_value', "Can't retrieve the created default value." + assert d[0][2] == 'specific value', "Can't retrieve the created default value." diff --git a/openerp/conf/__init__.py b/openerp/conf/__init__.py new file mode 100644 index 00000000000..7de8070f9e2 --- /dev/null +++ b/openerp/conf/__init__.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2011 OpenERP s.a. (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +""" Library-wide configuration variables. + +For now, configuration code is in openerp.tools.config. It is in mainly +unprocessed form, e.g. addons_path is a string with commas-separated +paths. The aim is to have code related to configuration (command line +parsing, configuration file loading and saving, ...) in this module +and provide real Python variables, e.g. addons_paths is really a list +of paths. + +""" + +import deprecation + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/conf/deprecation.py b/openerp/conf/deprecation.py new file mode 100644 index 00000000000..53be31b46f9 --- /dev/null +++ b/openerp/conf/deprecation.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2011 OpenERP s.a. (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +""" Regroup variables for deprecated features. + +To keep the OpenERP server backward compatible with older modules, some +additional code is needed throughout the core library. This module keeps +track of those specific measures by providing variables that can be unset +by the user to check if her code is future proof. + +""" + +# If True, the Python modules inside the openerp namespace are made available +# without the 'openerp.' prefix. E.g. openerp.osv.osv and osv.osv refer to the +# same module. +# Introduced around 2011.02. +open_openerp_namespace = True + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/ir/__init__.py b/openerp/db/__init__.py similarity index 79% rename from openerp/ir/__init__.py rename to openerp/db/__init__.py index 8a40066ca9e..5eb06af1ad1 100644 --- a/openerp/ir/__init__.py +++ b/openerp/db/__init__.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution -# Copyright (C) 2004-2009 Tiny SPRL (). +# Copyright (C) 2011 OpenERP s.a. (). # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -15,12 +15,16 @@ # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . +# along with this program. If not, see . # ############################################################################## +""" Lower-level database access. -from ir import * +This module provides access to the underlying database without going +through the ORM. The goal is to gather sql_db.py and other various db +code. + +""" # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - diff --git a/openerp/ir/ir.py b/openerp/modules/__init__.py similarity index 59% rename from openerp/ir/ir.py rename to openerp/modules/__init__.py index 40a74eb9126..171d8418269 100644 --- a/openerp/ir/ir.py +++ b/openerp/modules/__init__.py @@ -1,8 +1,9 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). +# Copyright (C) 2010-2011 OpenERP s.a. (). # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -15,26 +16,29 @@ # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . +# along with this program. If not, see . # ############################################################################## -import pickle -import openerp.osv as osv -import openerp.pooler as pooler +""" Modules (also called addons) management. -def ir_set(cr, uid, key, key2, name, models, value, replace=True, isobject=False, meta=None): - obj = pooler.get_pool(cr.dbname).get('ir.values') - return obj.set(cr, uid, key, key2, name, models, value, replace, isobject, meta) +""" -def ir_del(cr, uid, id): - obj = pooler.get_pool(cr.dbname).get('ir.values') - return obj.unlink(cr, uid, [id]) +import openerp.modules.db +import openerp.modules.graph +import openerp.modules.loading +import openerp.modules.migration +import openerp.modules.module + +# TODO temporarily expose those things +from openerp.modules.module import \ + get_modules, get_modules_with_version, \ + load_information_from_description_file, \ + get_module_resource, zip_directory, \ + get_module_path, initialize_sys_path, \ + register_module_classes, init_module_models + +from openerp.modules.loading import load_modules -def ir_get(cr, uid, key, key2, models, meta=False, context=None, res_id_req=False): - obj = pooler.get_pool(cr.dbname).get('ir.values') - res = obj.get(cr, uid, key, key2, models, meta=meta, context=context, res_id_req=res_id_req) - return res # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - diff --git a/openerp/modules/db.py b/openerp/modules/db.py new file mode 100644 index 00000000000..25ce7283c97 --- /dev/null +++ b/openerp/modules/db.py @@ -0,0 +1,121 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2009 Tiny SPRL (). +# Copyright (C) 2010 OpenERP s.a. (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +import openerp.modules + +def is_initialized(cr): + """ Check if a database has been initialized for the ORM. + + The database can be initialized with the 'initialize' function below. + + """ + cr.execute("SELECT relname FROM pg_class WHERE relkind='r' AND relname='ir_module_module'") + return len(cr.fetchall()) > 0 + +def initialize(cr): + """ Initialize a database with for the ORM. + + This executes base/base.sql, creates the ir_module_categories (taken + from each module descriptor file), and creates the ir_module_module + and ir_model_data entries. + + """ + f = openerp.modules.get_module_resource('base', 'base.sql') + base_sql_file = openerp.tools.misc.file_open(f) + try: + cr.execute(base_sql_file.read()) + cr.commit() + finally: + base_sql_file.close() + + for i in openerp.modules.get_modules(): + mod_path = openerp.modules.get_module_path(i) + if not mod_path: + continue + + # This will raise an exception if no/unreadable descriptor file. + info = openerp.modules.load_information_from_description_file(i) + + if not info: + continue + categories = info['category'].split('/') + category_id = create_categories(cr, categories) + + if info['installable']: + if info['active']: + state = 'to install' + else: + state = 'uninstalled' + else: + state = 'uninstallable' + + cr.execute('INSERT INTO ir_module_module \ + (author, website, name, shortdesc, description, \ + category_id, state, certificate, web, license) \ + VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) RETURNING id', ( + info['author'], + info['website'], i, info['name'], + info['description'], category_id, state, info['certificate'], + info['web'], + info['license'])) + id = cr.fetchone()[0] + cr.execute('INSERT INTO ir_model_data \ + (name,model,module, res_id, noupdate) VALUES (%s,%s,%s,%s,%s)', ( + 'module_meta_information', 'ir.module.module', i, id, True)) + dependencies = info['depends'] + for d in dependencies: + cr.execute('INSERT INTO ir_module_module_dependency \ + (module_id,name) VALUES (%s, %s)', (id, d)) + cr.commit() + +def create_categories(cr, categories): + """ Create the ir_module_category entries for some categories. + + categories is a list of strings forming a single category with its + parent categories, like ['Grand Parent', 'Parent', 'Child']. + + Return the database id of the (last) category. + + """ + p_id = None + while categories: + if p_id is not None: + cr.execute('SELECT id \ + FROM ir_module_category \ + WHERE name=%s AND parent_id=%s', (categories[0], p_id)) + else: + cr.execute('SELECT id \ + FROM ir_module_category \ + WHERE name=%s AND parent_id IS NULL', (categories[0],)) + c_id = cr.fetchone() + if not c_id: + cr.execute('INSERT INTO ir_module_category \ + (name, parent_id) \ + VALUES (%s, %s) RETURNING id', (categories[0], p_id)) + c_id = cr.fetchone()[0] + else: + c_id = c_id[0] + p_id = c_id + categories = categories[1:] + return p_id + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/modules/graph.py b/openerp/modules/graph.py new file mode 100644 index 00000000000..078d23c235b --- /dev/null +++ b/openerp/modules/graph.py @@ -0,0 +1,215 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2009 Tiny SPRL (). +# Copyright (C) 2010-2011 OpenERP s.a. (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +""" Modules dependency graph. """ + +import os, sys, imp +from os.path import join as opj +import itertools +import zipimport + +import openerp + +import openerp.osv as osv +import openerp.tools as tools +import openerp.tools.osutil as osutil +from openerp.tools.safe_eval import safe_eval as eval +import openerp.pooler as pooler +from openerp.tools.translate import _ + +import openerp.netsvc as netsvc + +import zipfile +import openerp.release as release + +import re +import base64 +from zipfile import PyZipFile, ZIP_DEFLATED +from cStringIO import StringIO + +import logging + +logger = netsvc.Logger() + + +class Graph(dict): + """ Modules dependency graph. + + The graph is a mapping from module name to Nodes. + + """ + + def add_node(self, name, deps): + max_depth, father = 0, None + for n in [Node(x, self) for x in deps]: + if n.depth >= max_depth: + father = n + max_depth = n.depth + if father: + return father.add_child(name) + else: + return Node(name, self) + + def update_from_db(self, cr): + if not len(self): + return + # update the graph with values from the database (if exist) + ## First, we set the default values for each package in graph + additional_data = dict.fromkeys(self.keys(), {'id': 0, 'state': 'uninstalled', 'dbdemo': False, 'installed_version': None}) + ## Then we get the values from the database + cr.execute('SELECT name, id, state, demo AS dbdemo, latest_version AS installed_version' + ' FROM ir_module_module' + ' WHERE name IN %s',(tuple(additional_data),) + ) + + ## and we update the default values with values from the database + additional_data.update(dict([(x.pop('name'), x) for x in cr.dictfetchall()])) + + for package in self.values(): + for k, v in additional_data[package.name].items(): + setattr(package, k, v) + + def add_module(self, cr, module, force=None): + self.add_modules(cr, [module], force) + + def add_modules(self, cr, module_list, force=None): + if force is None: + force = [] + packages = [] + len_graph = len(self) + for module in module_list: + # This will raise an exception if no/unreadable descriptor file. + # NOTE The call to load_information_from_description_file is already + # done by db.initialize, so it is possible to not do it again here. + info = openerp.modules.module.load_information_from_description_file(module) + if info['installable']: + packages.append((module, info)) # TODO directly a dict, like in get_modules_with_version + else: + logger.notifyChannel('init', netsvc.LOG_WARNING, 'module %s: not installable, skipped' % (module)) + + dependencies = dict([(p, info['depends']) for p, info in packages]) + current, later = set([p for p, info in packages]), set() + + while packages and current > later: + package, info = packages[0] + deps = info['depends'] + + # if all dependencies of 'package' are already in the graph, add 'package' in the graph + if reduce(lambda x, y: x and y in self, deps, True): + if not package in current: + packages.pop(0) + continue + later.clear() + current.remove(package) + node = self.add_node(package, deps) + node.data = info + for kind in ('init', 'demo', 'update'): + if package in tools.config[kind] or 'all' in tools.config[kind] or kind in force: + setattr(node, kind, True) + else: + later.add(package) + packages.append((package, info)) + packages.pop(0) + + self.update_from_db(cr) + + for package in later: + unmet_deps = filter(lambda p: p not in self, dependencies[package]) + logger.notifyChannel('init', netsvc.LOG_ERROR, 'module %s: Unmet dependencies: %s' % (package, ', '.join(unmet_deps))) + + result = len(self) - len_graph + if result != len(module_list): + logger.notifyChannel('init', netsvc.LOG_WARNING, 'Not all modules have loaded.') + return result + + + def __iter__(self): + level = 0 + done = set(self.keys()) + while done: + level_modules = [(name, module) for name, module in self.items() if module.depth==level] + for name, module in level_modules: + done.remove(name) + yield module + level += 1 + + +class Singleton(object): + def __new__(cls, name, graph): + if name in graph: + inst = graph[name] + else: + inst = object.__new__(cls) + inst.name = name + graph[name] = inst + return inst + + +class Node(Singleton): + """ One module in the modules dependency graph. + + Node acts as a per-module singleton. + + """ + + def __init__(self, name, graph): + self.graph = graph + if not hasattr(self, 'children'): + self.children = [] + if not hasattr(self, 'depth'): + self.depth = 0 + + def add_child(self, name): + node = Node(name, self.graph) + node.depth = self.depth + 1 + if node not in self.children: + self.children.append(node) + for attr in ('init', 'update', 'demo'): + if hasattr(self, attr): + setattr(node, attr, True) + self.children.sort(lambda x, y: cmp(x.name, y.name)) + return node + + def __setattr__(self, name, value): + super(Singleton, self).__setattr__(name, value) + if name in ('init', 'update', 'demo'): + tools.config[name][self.name] = 1 + for child in self.children: + setattr(child, name, value) + if name == 'depth': + for child in self.children: + setattr(child, name, value + 1) + + def __iter__(self): + return itertools.chain(iter(self.children), *map(iter, self.children)) + + def __str__(self): + return self._pprint() + + def _pprint(self, depth=0): + s = '%s\n' % self.name + for c in self.children: + s += '%s`-> %s' % (' ' * depth, c._pprint(depth+1)) + return s + + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/modules/loading.py b/openerp/modules/loading.py new file mode 100644 index 00000000000..17ae2dce3ef --- /dev/null +++ b/openerp/modules/loading.py @@ -0,0 +1,421 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2009 Tiny SPRL (). +# Copyright (C) 2010-2011 OpenERP s.a. (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +""" Modules (also called addons) management. + +""" + +import os, sys, imp +from os.path import join as opj +import itertools +import zipimport + +import openerp + +import openerp.osv as osv +import openerp.tools as tools +import openerp.tools.osutil as osutil +from openerp.tools.safe_eval import safe_eval as eval +import openerp.pooler as pooler +from openerp.tools.translate import _ + +import openerp.netsvc as netsvc + +import zipfile +import openerp.release as release + +import re +import base64 +from zipfile import PyZipFile, ZIP_DEFLATED +from cStringIO import StringIO + +import logging + +import openerp.modules.db +import openerp.modules.graph +import openerp.modules.migration + +from openerp.modules.module import \ + get_modules, get_modules_with_version, \ + load_information_from_description_file, \ + get_module_resource, zip_directory, \ + get_module_path, initialize_sys_path, \ + register_module_classes, init_module_models + +logger = netsvc.Logger() + + +def open_openerp_namespace(): + # See comment for open_openerp_namespace. + if openerp.conf.deprecation.open_openerp_namespace: + for k, v in list(sys.modules.items()): + if k.startswith('openerp.') and sys.modules.get(k[8:]) is None: + sys.modules[k[8:]] = v + + +def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=None, report=None): + """Migrates+Updates or Installs all module nodes from ``graph`` + :param graph: graph of module nodes to load + :param status: status dictionary for keeping track of progress + :param perform_checks: whether module descriptors should be checked for validity (prints warnings + for same cases, and even raise osv_except if certificate is invalid) + :param skip_modules: optional list of module names (packages) which have previously been loaded and can be skipped + :return: list of modules that were installed or updated + """ + def process_sql_file(cr, fp): + queries = fp.read().split(';') + for query in queries: + new_query = ' '.join(query.split()) + if new_query: + cr.execute(new_query) + + def load_init_xml(cr, m, idref, mode): + _load_data(cr, m, idref, mode, 'init_xml') + + def load_update_xml(cr, m, idref, mode): + _load_data(cr, m, idref, mode, 'update_xml') + + def load_demo_xml(cr, m, idref, mode): + _load_data(cr, m, idref, mode, 'demo_xml') + + def load_data(cr, module_name, idref, mode): + _load_data(cr, module_name, idref, mode, 'data') + + def load_demo(cr, module_name, idref, mode): + _load_data(cr, module_name, idref, mode, 'demo') + + def load_test(cr, module_name, idref, mode): + cr.commit() + if not tools.config.options['test_disable']: + try: + _load_data(cr, module_name, idref, mode, 'test') + except Exception, e: + logging.getLogger('test').exception('Tests failed to execute in module %s', module_name) + finally: + if tools.config.options['test_commit']: + cr.commit() + else: + cr.rollback() + + def _load_data(cr, module_name, idref, mode, kind): + """ + + kind: data, demo, test, init_xml, update_xml, demo_xml. + + noupdate is False, unless it is demo data or it is csv data in + init mode. + + """ + for filename in package.data[kind]: + log = logging.getLogger('init') + log.info("module %s: loading %s", module_name, filename) + _, ext = os.path.splitext(filename) + pathname = os.path.join(module_name, filename) + fp = tools.file_open(pathname) + noupdate = False + if kind in ('demo', 'demo_xml'): + noupdate = True + try: + if ext == '.csv': + if kind in ('init', 'init_xml'): + noupdate = True + tools.convert_csv_import(cr, module_name, pathname, fp.read(), idref, mode, noupdate) + elif ext == '.sql': + process_sql_file(cr, fp) + elif ext == '.yml': + tools.convert_yaml_import(cr, module_name, fp, idref, mode, noupdate) + else: + tools.convert_xml_import(cr, module_name, fp, idref, mode, noupdate, report) + finally: + fp.close() + + if status is None: + status = {} + + processed_modules = [] + statusi = 0 + pool = pooler.get_pool(cr.dbname) + migrations = openerp.modules.migration.MigrationManager(cr, graph) + logger.notifyChannel('init', netsvc.LOG_DEBUG, 'loading %d packages..' % len(graph)) + + # register, instanciate and initialize models for each modules + for package in graph: + if skip_modules and package.name in skip_modules: + continue + logger.notifyChannel('init', netsvc.LOG_INFO, 'module %s: loading objects' % package.name) + migrations.migrate_module(package, 'pre') + register_module_classes(package.name) + models = pool.instanciate(package.name, cr) + if hasattr(package, 'init') or hasattr(package, 'update') or package.state in ('to install', 'to upgrade'): + init_module_models(cr, package.name, models) + cr.commit() + + # load data for each modules + modobj = pool.get('ir.module.module') + for package in graph: + status['progress'] = (float(statusi)+0.1) / len(graph) + m = package.name + mid = package.id + + if skip_modules and m in skip_modules: + continue + + if perform_checks: + modobj.check(cr, 1, [mid]) + + idref = {} + status['progress'] = (float(statusi)+0.4) / len(graph) + + mode = 'update' + if hasattr(package, 'init') or package.state == 'to install': + mode = 'init' + + if hasattr(package, 'init') or hasattr(package, 'update') or package.state in ('to install', 'to upgrade'): + if package.state=='to upgrade': + # upgrading the module information + modobj.write(cr, 1, [mid], modobj.get_values_from_terp(package.data)) + load_init_xml(cr, m, idref, mode) + load_update_xml(cr, m, idref, mode) + load_data(cr, m, idref, mode) + if hasattr(package, 'demo') or (package.dbdemo and package.state != 'installed'): + status['progress'] = (float(statusi)+0.75) / len(graph) + load_demo_xml(cr, m, idref, mode) + load_demo(cr, m, idref, mode) + cr.execute('update ir_module_module set demo=%s where id=%s', (True, mid)) + + # launch tests only in demo mode, as most tests will depend + # on demo data. Other tests can be added into the regular + # 'data' section, but should probably not alter the data, + # as there is no rollback. + load_test(cr, m, idref, mode) + + processed_modules.append(package.name) + + migrations.migrate_module(package, 'post') + + ver = release.major_version + '.' + package.data['version'] + # Set new modules and dependencies + modobj.write(cr, 1, [mid], {'state': 'installed', 'latest_version': ver}) + cr.commit() + # Update translations for all installed languages + modobj.update_translations(cr, 1, [mid], None) + cr.commit() + + package.state = 'installed' + for kind in ('init', 'demo', 'update'): + if hasattr(package, kind): + delattr(package, kind) + + statusi += 1 + + cr.commit() + + return processed_modules + +def _check_module_names(cr, module_names): + mod_names = set(module_names) + if 'base' in mod_names: + # ignore dummy 'all' module + if 'all' in mod_names: + mod_names.remove('all') + if mod_names: + cr.execute("SELECT count(id) AS count FROM ir_module_module WHERE name in %s", (tuple(mod_names),)) + if cr.dictfetchone()['count'] != len(mod_names): + # find out what module name(s) are incorrect: + cr.execute("SELECT name FROM ir_module_module") + incorrect_names = mod_names.difference([x['name'] for x in cr.dictfetchall()]) + logging.getLogger('init').warning('invalid module names, ignored: %s', ", ".join(incorrect_names)) + +def load_modules(db, force_demo=False, status=None, update_module=False): + # TODO status['progress'] reporting is broken: used twice (and reset each + # time to zero) in load_module_graph, not fine-grained enough. + # It should be a method exposed by the pool. + + initialize_sys_path() + + open_openerp_namespace() + + force = [] + if force_demo: + force.append('demo') + + cr = db.cursor() + try: + if not openerp.modules.db.is_initialized(cr): + logger.notifyChannel("init", netsvc.LOG_INFO, "init db") + openerp.modules.db.initialize(cr) + tools.config["init"]["all"] = 1 + tools.config['update']['all'] = 1 + if not tools.config['without_demo']: + tools.config["demo"]['all'] = 1 + + # This is a brand new pool, just created in pooler.get_db_and_pool() + pool = pooler.get_pool(cr.dbname) + + processed_modules = [] + report = tools.assertion_report() + # NOTE: Try to also load the modules that have been marked as uninstallable previously... + STATES_TO_LOAD = ['installed', 'to upgrade', 'uninstallable'] + if 'base' in tools.config['update'] or 'all' in tools.config['update']: + cr.execute("update ir_module_module set state=%s where name=%s and state=%s", ('to upgrade', 'base', 'installed')) + + # STEP 1: LOAD BASE (must be done before module dependencies can be computed for later steps) + graph = openerp.modules.graph.Graph() + graph.add_module(cr, 'base', force) + if not graph: + logger.notifyChannel('init', netsvc.LOG_CRITICAL, 'module base cannot be loaded! (hint: verify addons-path)') + raise osv.osv.except_osv(_('Could not load base module'), _('module base cannot be loaded! (hint: verify addons-path)')) + processed_modules.extend(load_module_graph(cr, graph, status, perform_checks=(not update_module), report=report)) + + if tools.config['load_language']: + for lang in tools.config['load_language'].split(','): + tools.load_language(cr, lang) + + # STEP 2: Mark other modules to be loaded/updated + if update_module: + modobj = pool.get('ir.module.module') + if ('base' in tools.config['init']) or ('base' in tools.config['update']): + logger.notifyChannel('init', netsvc.LOG_INFO, 'updating modules list') + modobj.update_list(cr, 1) + + _check_module_names(cr, itertools.chain(tools.config['init'].keys(), tools.config['update'].keys())) + + mods = [k for k in tools.config['init'] if tools.config['init'][k]] + if mods: + ids = modobj.search(cr, 1, ['&', ('state', '=', 'uninstalled'), ('name', 'in', mods)]) + if ids: + modobj.button_install(cr, 1, ids) + + mods = [k for k in tools.config['update'] if tools.config['update'][k]] + if mods: + ids = modobj.search(cr, 1, ['&', ('state', '=', 'installed'), ('name', 'in', mods)]) + if ids: + modobj.button_upgrade(cr, 1, ids) + + cr.execute("update ir_module_module set state=%s where name=%s", ('installed', 'base')) + + STATES_TO_LOAD += ['to install'] + + + # STEP 3: Load marked modules (skipping base which was done in STEP 1) + loop_guardrail = 0 + while True: + loop_guardrail += 1 + if loop_guardrail > 100: + raise ValueError('Possible recursive module tree detected, aborting.') + cr.execute("SELECT name from ir_module_module WHERE state IN %s" ,(tuple(STATES_TO_LOAD),)) + + module_list = [name for (name,) in cr.fetchall() if name not in graph] + if not module_list: + break + + new_modules_in_graph = graph.add_modules(cr, module_list, force) + if new_modules_in_graph == 0: + # nothing to load + break + + logger.notifyChannel('init', netsvc.LOG_DEBUG, 'Updating graph with %d more modules' % (len(module_list))) + processed_modules.extend(load_module_graph(cr, graph, status, report=report, skip_modules=processed_modules)) + + # load custom models + cr.execute('select model from ir_model where state=%s', ('manual',)) + for model in cr.dictfetchall(): + pool.get('ir.model').instanciate(cr, 1, model['model'], {}) + + # STEP 4: Finish and cleanup + if processed_modules: + cr.execute("""select model,name from ir_model where id NOT IN (select distinct model_id from ir_model_access)""") + for (model, name) in cr.fetchall(): + model_obj = pool.get(model) + if model_obj and not isinstance(model_obj, osv.osv.osv_memory): + logger.notifyChannel('init', netsvc.LOG_WARNING, 'object %s (%s) has no access rules!' % (model, name)) + + # Temporary warning while we remove access rights on osv_memory objects, as they have + # been replaced by owner-only access rights + cr.execute("""select distinct mod.model, mod.name from ir_model_access acc, ir_model mod where acc.model_id = mod.id""") + for (model, name) in cr.fetchall(): + model_obj = pool.get(model) + if isinstance(model_obj, osv.osv.osv_memory): + logger.notifyChannel('init', netsvc.LOG_WARNING, 'In-memory object %s (%s) should not have explicit access rules!' % (model, name)) + + cr.execute("SELECT model from ir_model") + for (model,) in cr.fetchall(): + obj = pool.get(model) + if obj: + obj._check_removed_columns(cr, log=True) + else: + logger.notifyChannel('init', netsvc.LOG_WARNING, "Model %s is referenced but not present in the orm pool!" % model) + + # Cleanup orphan records + pool.get('ir.model.data')._process_end(cr, 1, processed_modules) + + if report.get_report(): + logger.notifyChannel('init', netsvc.LOG_INFO, report) + + for kind in ('init', 'demo', 'update'): + tools.config[kind] = {} + + cr.commit() + if update_module: + # Remove records referenced from ir_model_data for modules to be + # removed (and removed the references from ir_model_data). + cr.execute("select id,name from ir_module_module where state=%s", ('to remove',)) + for mod_id, mod_name in cr.fetchall(): + cr.execute('select model,res_id from ir_model_data where noupdate=%s and module=%s order by id desc', (False, mod_name,)) + for rmod, rid in cr.fetchall(): + uid = 1 + rmod_module= pool.get(rmod) + if rmod_module: + # TODO group by module so that we can delete multiple ids in a call + rmod_module.unlink(cr, uid, [rid]) + else: + logger.notifyChannel('init', netsvc.LOG_ERROR, 'Could not locate %s to remove res=%d' % (rmod,rid)) + cr.execute('delete from ir_model_data where noupdate=%s and module=%s', (False, mod_name,)) + cr.commit() + + # Remove menu items that are not referenced by any of other + # (child) menu item, ir_values, or ir_model_data. + # This code could be a method of ir_ui_menu. + # TODO: remove menu without actions of children + while True: + cr.execute('''delete from + ir_ui_menu + where + (id not IN (select parent_id from ir_ui_menu where parent_id is not null)) + and + (id not IN (select res_id from ir_values where model='ir.ui.menu')) + and + (id not IN (select res_id from ir_model_data where model='ir.ui.menu'))''') + cr.commit() + if not cr.rowcount: + break + else: + logger.notifyChannel('init', netsvc.LOG_INFO, 'removed %d unused menus' % (cr.rowcount,)) + + # Pretend that modules to be removed are actually uninstalled. + cr.execute("update ir_module_module set state=%s where state=%s", ('uninstalled', 'to remove',)) + cr.commit() + finally: + cr.close() + + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/modules/migration.py b/openerp/modules/migration.py new file mode 100644 index 00000000000..d26f5927141 --- /dev/null +++ b/openerp/modules/migration.py @@ -0,0 +1,204 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2009 Tiny SPRL (). +# Copyright (C) 2010-2011 OpenERP s.a. (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +""" Modules migration handling. """ + +import os, sys, imp +from os.path import join as opj +import itertools +import zipimport + +import openerp + +import openerp.osv as osv +import openerp.tools as tools +import openerp.tools.osutil as osutil +from openerp.tools.safe_eval import safe_eval as eval +import openerp.pooler as pooler +from openerp.tools.translate import _ + +import openerp.netsvc as netsvc + +import zipfile +import openerp.release as release + +import re +import base64 +from zipfile import PyZipFile, ZIP_DEFLATED +from cStringIO import StringIO + +import logging + +import openerp.modules.db +import openerp.modules.graph + +logger = netsvc.Logger() + + +class MigrationManager(object): + """ + This class manage the migration of modules + Migrations files must be python files containing a "migrate(cr, installed_version)" function. + Theses files must respect a directory tree structure: A 'migrations' folder which containt a + folder by version. Version can be 'module' version or 'server.module' version (in this case, + the files will only be processed by this version of the server). Python file names must start + by 'pre' or 'post' and will be executed, respectively, before and after the module initialisation + Example: + + + `-- migrations + |-- 1.0 + | |-- pre-update_table_x.py + | |-- pre-update_table_y.py + | |-- post-clean-data.py + | `-- README.txt # not processed + |-- 5.0.1.1 # files in this folder will be executed only on a 5.0 server + | |-- pre-delete_table_z.py + | `-- post-clean-data.py + `-- foo.py # not processed + + This similar structure is generated by the maintenance module with the migrations files get by + the maintenance contract + + """ + def __init__(self, cr, graph): + self.cr = cr + self.graph = graph + self.migrations = {} + self._get_files() + + def _get_files(self): + + """ + import addons.base.maintenance.utils as maintenance_utils + maintenance_utils.update_migrations_files(self.cr) + #""" + + for pkg in self.graph: + self.migrations[pkg.name] = {} + if not (hasattr(pkg, 'update') or pkg.state == 'to upgrade'): + continue + + get_module_filetree = openerp.modules.module.get_module_filetree + self.migrations[pkg.name]['module'] = get_module_filetree(pkg.name, 'migrations') or {} + self.migrations[pkg.name]['maintenance'] = get_module_filetree('base', 'maintenance/migrations/' + pkg.name) or {} + + def migrate_module(self, pkg, stage): + assert stage in ('pre', 'post') + stageformat = {'pre': '[>%s]', + 'post': '[%s>]', + } + + if not (hasattr(pkg, 'update') or pkg.state == 'to upgrade'): + return + + def convert_version(version): + if version.startswith(release.major_version) and version != release.major_version: + return version # the version number already containt the server version + return "%s.%s" % (release.major_version, version) + + def _get_migration_versions(pkg): + def __get_dir(tree): + return [d for d in tree if tree[d] is not None] + + versions = list(set( + __get_dir(self.migrations[pkg.name]['module']) + + __get_dir(self.migrations[pkg.name]['maintenance']) + )) + versions.sort(key=lambda k: parse_version(convert_version(k))) + return versions + + def _get_migration_files(pkg, version, stage): + """ return a list of tuple (module, file) + """ + m = self.migrations[pkg.name] + lst = [] + + mapping = {'module': opj(pkg.name, 'migrations'), + 'maintenance': opj('base', 'maintenance', 'migrations', pkg.name), + } + + for x in mapping.keys(): + if version in m[x]: + for f in m[x][version]: + if m[x][version][f] is not None: + continue + if not f.startswith(stage + '-'): + continue + lst.append(opj(mapping[x], version, f)) + lst.sort() + return lst + + def mergedict(a, b): + a = a.copy() + a.update(b) + return a + + from openerp.tools.parse_version import parse_version + + parsed_installed_version = parse_version(pkg.installed_version or '') + current_version = parse_version(convert_version(pkg.data['version'])) + + versions = _get_migration_versions(pkg) + + for version in versions: + if parsed_installed_version < parse_version(convert_version(version)) <= current_version: + + strfmt = {'addon': pkg.name, + 'stage': stage, + 'version': stageformat[stage] % version, + } + + for pyfile in _get_migration_files(pkg, version, stage): + name, ext = os.path.splitext(os.path.basename(pyfile)) + if ext.lower() != '.py': + continue + mod = fp = fp2 = None + try: + fp = tools.file_open(pyfile) + + # imp.load_source need a real file object, so we create + # one from the file-like object we get from file_open + fp2 = os.tmpfile() + fp2.write(fp.read()) + fp2.seek(0) + try: + mod = imp.load_source(name, pyfile, fp2) + logger.notifyChannel('migration', netsvc.LOG_INFO, 'module %(addon)s: Running migration %(version)s %(name)s' % mergedict({'name': mod.__name__}, strfmt)) + mod.migrate(self.cr, pkg.installed_version) + except ImportError: + logger.notifyChannel('migration', netsvc.LOG_ERROR, 'module %(addon)s: Unable to load %(stage)s-migration file %(file)s' % mergedict({'file': pyfile}, strfmt)) + raise + except AttributeError: + logger.notifyChannel('migration', netsvc.LOG_ERROR, 'module %(addon)s: Each %(stage)s-migration file must have a "migrate(cr, installed_version)" function' % strfmt) + except: + raise + finally: + if fp: + fp.close() + if fp2: + fp2.close() + if mod: + del mod + + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/modules/module.py b/openerp/modules/module.py new file mode 100644 index 00000000000..bf53ca6d87c --- /dev/null +++ b/openerp/modules/module.py @@ -0,0 +1,379 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2009 Tiny SPRL (). +# Copyright (C) 2010-2011 OpenERP s.a. (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +import os, sys, imp +from os.path import join as opj +import itertools +import zipimport + +import openerp + +import openerp.osv as osv +import openerp.tools as tools +import openerp.tools.osutil as osutil +from openerp.tools.safe_eval import safe_eval as eval +import openerp.pooler as pooler +from openerp.tools.translate import _ + +import openerp.netsvc as netsvc + +import zipfile +import openerp.release as release + +import re +import base64 +from zipfile import PyZipFile, ZIP_DEFLATED +from cStringIO import StringIO + +import logging + +import openerp.modules.db +import openerp.modules.graph + +_ad = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'addons') # default addons path (base) +ad_paths = [] + +# Modules already loaded +loaded = [] + +logger = netsvc.Logger() + +def initialize_sys_path(): + global ad_paths + + if ad_paths: + return + + ad_paths = map(lambda m: os.path.abspath(tools.ustr(m.strip())), tools.config['addons_path'].split(',')) + + sys.path.insert(1, _ad) + + ad_cnt=1 + for adp in ad_paths: + if adp != _ad: + sys.path.insert(ad_cnt, adp) + ad_cnt+=1 + + ad_paths.append(_ad) # for get_module_path + + +def get_module_path(module, downloaded=False): + """Return the path of the given module. + + Search the addons paths and return the first path where the given + module is found. If downloaded is True, return the default addons + path if nothing else is found. + + """ + initialize_sys_path() + for adp in ad_paths: + if os.path.exists(opj(adp, module)) or os.path.exists(opj(adp, '%s.zip' % module)): + return opj(adp, module) + + if downloaded: + return opj(_ad, module) + logger.notifyChannel('init', netsvc.LOG_WARNING, 'module %s: module not found' % (module,)) + return False + + +def get_module_filetree(module, dir='.'): + path = get_module_path(module) + if not path: + return False + + dir = os.path.normpath(dir) + if dir == '.': + dir = '' + if dir.startswith('..') or (dir and dir[0] == '/'): + raise Exception('Cannot access file outside the module') + + if not os.path.isdir(path): + # zipmodule + zip = zipfile.ZipFile(path + ".zip") + files = ['/'.join(f.split('/')[1:]) for f in zip.namelist()] + else: + files = osutil.listdir(path, True) + + tree = {} + for f in files: + if not f.startswith(dir): + continue + + if dir: + f = f[len(dir)+int(not dir.endswith('/')):] + lst = f.split(os.sep) + current = tree + while len(lst) != 1: + current = current.setdefault(lst.pop(0), {}) + current[lst.pop(0)] = None + + return tree + +def zip_directory(directory, b64enc=True, src=True): + """Compress a directory + + @param directory: The directory to compress + @param base64enc: if True the function will encode the zip file with base64 + @param src: Integrate the source files + + @return: a string containing the zip file + """ + + RE_exclude = re.compile('(?:^\..+\.swp$)|(?:\.py[oc]$)|(?:\.bak$)|(?:\.~.~$)', re.I) + + def _zippy(archive, path, src=True): + path = os.path.abspath(path) + base = os.path.basename(path) + for f in osutil.listdir(path, True): + bf = os.path.basename(f) + if not RE_exclude.search(bf) and (src or bf in ('__openerp__.py', '__terp__.py') or not bf.endswith('.py')): + archive.write(os.path.join(path, f), os.path.join(base, f)) + + archname = StringIO() + archive = PyZipFile(archname, "w", ZIP_DEFLATED) + + # for Python 2.5, ZipFile.write() still expects 8-bit strings (2.6 converts to utf-8) + directory = tools.ustr(directory).encode('utf-8') + + archive.writepy(directory) + _zippy(archive, directory, src=src) + archive.close() + archive_data = archname.getvalue() + archname.close() + + if b64enc: + return base64.encodestring(archive_data) + + return archive_data + +def get_module_as_zip(modulename, b64enc=True, src=True): + """Generate a module as zip file with the source or not and can do a base64 encoding + + @param modulename: The module name + @param b64enc: if True the function will encode the zip file with base64 + @param src: Integrate the source files + + @return: a stream to store in a file-like object + """ + + ap = get_module_path(str(modulename)) + if not ap: + raise Exception('Unable to find path for module %s' % modulename) + + ap = ap.encode('utf8') + if os.path.isfile(ap + '.zip'): + val = file(ap + '.zip', 'rb').read() + if b64enc: + val = base64.encodestring(val) + else: + val = zip_directory(ap, b64enc, src) + + return val + + +def get_module_resource(module, *args): + """Return the full path of a resource of the given module. + + @param module: the module + @param args: the resource path components + + @return: absolute path to the resource + + TODO name it get_resource_path + TODO make it available inside on osv object (self.get_resource_path) + """ + a = get_module_path(module) + if not a: return False + resource_path = opj(a, *args) + if zipfile.is_zipfile( a +'.zip') : + zip = zipfile.ZipFile( a + ".zip") + files = ['/'.join(f.split('/')[1:]) for f in zip.namelist()] + resource_path = '/'.join(args) + if resource_path in files: + return opj(a, resource_path) + elif os.path.exists(resource_path): + return resource_path + return False + + +def load_information_from_description_file(module): + """ + :param module: The name of the module (sale, purchase, ...) + """ + + terp_file = get_module_resource(module, '__openerp__.py') + if not terp_file: + terp_file = get_module_resource(module, '__terp__.py') + mod_path = get_module_path(module) + if terp_file: + info = {} + if os.path.isfile(terp_file) or zipfile.is_zipfile(mod_path+'.zip'): + terp_f = tools.file_open(terp_file) + try: + info = eval(terp_f.read()) + except Exception: + logger.notifyChannel('modules', netsvc.LOG_ERROR, + 'module %s: exception while evaluating file %s' % + (module, terp_file)) + raise + finally: + terp_f.close() + # TODO the version should probably be mandatory + info.setdefault('version', '0') + info.setdefault('category', 'Uncategorized') + info.setdefault('depends', []) + info.setdefault('author', '') + info.setdefault('website', '') + info.setdefault('name', False) + info.setdefault('description', '') + info['certificate'] = info.get('certificate') or None + info['web'] = info.get('web') or False + info['license'] = info.get('license') or 'AGPL-3' + info.setdefault('installable', True) + info.setdefault('active', False) + for kind in ['data', 'demo', 'test', + 'init_xml', 'update_xml', 'demo_xml']: + info.setdefault(kind, []) + return info + + #TODO: refactor the logger in this file to follow the logging guidelines + # for 6.0 + logging.getLogger('modules').debug('module %s: no descriptor file' + ' found: __openerp__.py or __terp__.py (deprecated)', module) + return {} + + +def init_module_models(cr, module_name, obj_list): + """ Initialize a list of models. + + Call _auto_init and init on each model to create or update the + database tables supporting the models. + + TODO better explanation of _auto_init and init. + + """ + + logger.notifyChannel('init', netsvc.LOG_INFO, + 'module %s: creating or updating database tables' % module_name) + # TODO _auto_init doesn't seem to return anything + # so this todo list would be useless. + todo = [] + for obj in obj_list: + try: + # TODO the module in the context doesn't seem usefull: + # it is available (at least) in the class' _module attribute. + # (So module_name would be useless too.) + result = obj._auto_init(cr, {'module': module_name}) + except Exception, e: + raise + if result: + todo += result + if hasattr(obj, 'init'): + obj.init(cr) + cr.commit() + todo.sort() + for t in todo: + t[1](cr, *t[2]) + cr.commit() + + +def load_module(module_name): + """ Load a Python module found on the addons paths.""" + fm = imp.find_module(module_name, ad_paths) + try: + imp.load_module(module_name, *fm) + finally: + if fm[0]: + fm[0].close() + + +def register_module_classes(m): + """ Register module named m, if not already registered. + + This will load the module and register all of its models. (Actually, the + explicit constructor call of each of the models inside the module will + register them.) + + """ + + def log(e): + mt = isinstance(e, zipimport.ZipImportError) and 'zip ' or '' + msg = "Couldn't load %smodule %s" % (mt, m) + logger.notifyChannel('init', netsvc.LOG_CRITICAL, msg) + logger.notifyChannel('init', netsvc.LOG_CRITICAL, e) + + global loaded + if m in loaded: + return + logger.notifyChannel('init', netsvc.LOG_INFO, 'module %s: registering objects' % m) + mod_path = get_module_path(m) + + initialize_sys_path() + try: + zip_mod_path = mod_path + '.zip' + if not os.path.isfile(zip_mod_path): + load_module(m) + else: + zimp = zipimport.zipimporter(zip_mod_path) + zimp.load_module(m) + except Exception, e: + log(e) + raise + else: + loaded.append(m) + + +def get_modules(): + """Returns the list of module names + """ + def listdir(dir): + def clean(name): + name = os.path.basename(name) + if name[-4:] == '.zip': + name = name[:-4] + return name + + def is_really_module(name): + name = opj(dir, name) + return os.path.isdir(name) or zipfile.is_zipfile(name) + return map(clean, filter(is_really_module, os.listdir(dir))) + + plist = [] + initialize_sys_path() + for ad in ad_paths: + plist.extend(listdir(ad)) + return list(set(plist)) + + +def get_modules_with_version(): + modules = get_modules() + res = {} + for module in modules: + try: + info = load_information_from_description_file(module) + res[module] = "%s.%s" % (release.major_version, info['version']) + except Exception, e: + continue + return res + + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/modules/registry.py b/openerp/modules/registry.py new file mode 100644 index 00000000000..b9762200a97 --- /dev/null +++ b/openerp/modules/registry.py @@ -0,0 +1,110 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2009 Tiny SPRL (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +""" Models registries. + +""" + +import openerp.sql_db + + +class BoundRegistry(object): + """ Model registry/database connection pair.""" + def __init__(self, db, registry): + self.db = db + self.registry = registry + + +class RegistryManager(object): + """ Model registries manager. + + The manager is responsible for creation and deletion of bound model + registries (essentially database connection/model registry pairs). + + """ + + # TODO maybe should receive the addons paths + def __init__(self): + # Mapping between db name and bound model registry. + # Accessed through the methods below. + self.bound_registries = {} + + + def get(self, db_name, force_demo=False, status=None, update_module=False, + pooljobs=True): + """ Return a bound registry for a given database name.""" + + if db_name in self.bound_registries: + bound_registry = self.bound_registries[db_name] + else: + bound_registry = self.new(db_name, force_demo, status, + update_module, pooljobs) + return bound_registry + + + def new(self, db_name, force_demo=False, status=None, + update_module=False, pooljobs=True): + """ Create and return a new bound registry for a given database name. + + The (possibly) previous bound registry for that database name is + discarded. + + """ + + import openerp.modules + import openerp.osv.osv as osv_osv + db = openerp.sql_db.db_connect(db_name) + pool = osv_osv.osv_pool() + + # Initializing a registry will call general code which will in turn + # call registries.get (this object) to obtain the registry being + # initialized. Make it available in the bound_registries dictionary + # then remove it if an exception is raised. + self.delete(db_name) + bound_registry = BoundRegistry(db, pool) + self.bound_registries[db_name] = bound_registry + try: + # This should be a method on BoundRegistry + openerp.modules.load_modules(db, force_demo, status, update_module) + except Exception: + del self.bound_registries[db_name] + raise + + cr = db.cursor() + try: + pool.do_parent_store(cr) + pool.get('ir.actions.report.xml').register_all(cr) + cr.commit() + finally: + cr.close() + + if pooljobs: + pool.get('ir.cron').restart(db.dbname) + + return bound_registry + + + def delete(self, db_name): + if db_name in self.bound_registries: + del self.bound_registries[db_name] + + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/netsvc.py b/openerp/netsvc.py index 1b8d54e3c8e..9ce7f4a35d2 100644 --- a/openerp/netsvc.py +++ b/openerp/netsvc.py @@ -213,6 +213,19 @@ def init_logger(): logger.addHandler(handler) logger.setLevel(int(tools.config['log_level'] or '0')) +# A alternative logging scheme for automated runs of the +# server intended to test it. +def init_alternative_logger(): + class H(logging.Handler): + def emit(self, record): + if record.levelno > 20: + print record.levelno, record.pathname, record.msg + handler = H() + logger = logging.getLogger() + logger.handlers = [] + logger.addHandler(handler) + logger.setLevel(logging.ERROR) + class Agent(object): """Singleton that keeps track of cancellable tasks to run at a given timestamp. @@ -277,12 +290,13 @@ class Agent(object): time.sleep(1) time.sleep(60) -agent_runner = threading.Thread(target=Agent.runner, name="netsvc.Agent.runner") -# the agent runner is a typical daemon thread, that will never quit and must be -# terminated when the main process exits - with no consequence (the processing -# threads it spawns are not marked daemon) -agent_runner.setDaemon(True) -agent_runner.start() +def start_agent(): + agent_runner = threading.Thread(target=Agent.runner, name="netsvc.Agent.runner") + # the agent runner is a typical daemon thread, that will never quit and must be + # terminated when the main process exits - with no consequence (the processing + # threads it spawns are not marked daemon) + agent_runner.setDaemon(True) + agent_runner.start() import traceback @@ -393,19 +407,22 @@ def replace_request_password(args): args[2] = '*' return args -class OpenERPDispatcher: - def log(self, title, msg, channel=logging.DEBUG_RPC, depth=None): - logger = logging.getLogger(title) - if logger.isEnabledFor(channel): - for line in pformat(msg, depth=depth).split('\n'): - logger.log(channel, line) +def log(title, msg, channel=logging.DEBUG_RPC, depth=None, fn=""): + logger = logging.getLogger(title) + if logger.isEnabledFor(channel): + indent='' + indent_after=' '*len(fn) + for line in (fn+pformat(msg, depth=depth)).split('\n'): + logger.log(channel, indent+line) + indent=indent_after +class OpenERPDispatcher: + def log(self, title, msg, channel=logging.DEBUG_RPC, depth=None, fn=""): + log(title, msg, channel=channel, depth=depth, fn=fn) def dispatch(self, service_name, method, params): try: logger = logging.getLogger('result') - self.log('service', service_name) - self.log('method', method) - self.log('params', replace_request_password(params), depth=(None if logger.isEnabledFor(logging.DEBUG_RPC_ANSWER) else 1)) + self.log('service', tuple(replace_request_password(params)), depth=(None if logger.isEnabledFor(logging.DEBUG_RPC_ANSWER) else 1), fn='%s.%s'%(service_name,method)) auth = getattr(self, 'auth_provider', None) result = ExportService.getService(service_name).dispatch(method, auth, params) self.log('result', result, channel=logging.DEBUG_RPC_ANSWER) diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py index 5d60d299d55..306e7d007f3 100644 --- a/openerp/osv/fields.py +++ b/openerp/osv/fields.py @@ -63,7 +63,13 @@ class _column(object): _symbol_set = (_symbol_c, _symbol_f) _symbol_get = None - def __init__(self, string='unknown', required=False, readonly=False, domain=None, context=None, states=None, priority=0, change_default=False, size=None, ondelete="set null", translate=False, select=False, **args): + def __init__(self, string='unknown', required=False, readonly=False, domain=None, context=None, states=None, priority=0, change_default=False, size=None, ondelete="set null", translate=False, select=False, manual=False, **args): + """ + + The 'manual' keyword argument specifies if the field is a custom one. + It corresponds to the 'state' column in ir_model_fields. + + """ if domain is None: domain = [] if context is None: @@ -84,6 +90,7 @@ class _column(object): self.read = False self.view_load = 0 self.select = select + self.manual = manual self.selectable = True self.group_operator = args.get('group_operator', False) for a in args: diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 1d9cbe36ee8..31606625072 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -63,6 +63,39 @@ from openerp.tools.safe_eval import safe_eval as eval from openerp.tools import SKIPPED_ELEMENT_TYPES regex_order = re.compile('^(([a-z0-9_]+|"[a-z0-9_]+")( *desc| *asc)?( *, *|))+$', re.I) +regex_object_name = re.compile(r'^[a-z0-9_.]+$') + +# Mapping between openerp module names and their osv classes. +module_class_list = {} + +def check_object_name(name): + """ Check if the given name is a valid openerp object name. + + The _name attribute in osv and osv_memory object is subject to + some restrictions. This function returns True or False whether + the given name is allowed or not. + + TODO: this is an approximation. The goal in this approximation + is to disallow uppercase characters (in some places, we quote + table/column names and in other not, which leads to this kind + of errors: + + psycopg2.ProgrammingError: relation "xxx" does not exist). + + The same restriction should apply to both osv and osv_memory + objects for consistency. + + """ + if regex_object_name.match(name) is None: + return False + return True + +def raise_on_invalid_object_name(name): + if not check_object_name(name): + msg = "The _name attribute %s is not valid." % name + logger = netsvc.Logger() + logger.notifyChannel('orm', netsvc.LOG_ERROR, msg) + raise except_orm('ValueError', msg) POSTGRES_CONFDELTYPES = { 'RESTRICT': 'r', @@ -384,6 +417,21 @@ def get_pg_type(f): class orm_template(object): + """ Base class for OpenERP models. + + OpenERP models are created by inheriting from this class (although + not directly; more specifically by inheriting from osv or + osv_memory). The constructor is called once, usually directly + after the class definition, e.g.: + + class user(osv): + ... + user() + + The system will later instanciate the class once per database (on + which the class' module is installed). + + """ _name = None _columns = {} _constraints = [] @@ -421,6 +469,18 @@ class orm_template(object): raise NotImplementedError(_('The read_group method is not implemented on this object !')) def _field_create(self, cr, context=None): + """ + + Create/update entries in ir_model, ir_model_data, and ir_model_fields. + + - create an entry in ir_model (if there is not already one), + - create an entry in ir_model_data (if there is not already one, and if + 'module' is in the context), + - update ir_model_fields with the fields found in _columns + (TODO there is some redundancy as _columns is updated from + ir_model_fields in __init__). + + """ if context is None: context = {} cr.execute("SELECT id FROM ir_model WHERE model=%s", (self._name,)) @@ -458,6 +518,7 @@ class orm_template(object): 'readonly': (f.readonly and 1) or 0, 'required': (f.required and 1) or 0, 'selectable': (f.selectable and 1) or 0, + 'translate': (f.translate and 1) or 0, 'relation_field': (f._type=='one2many' and isinstance(f, fields.one2many)) and f._fields_id or '', } # When its a custom field,it does not contain f.select @@ -474,13 +535,13 @@ class orm_template(object): vals['id'] = id cr.execute("""INSERT INTO ir_model_fields ( id, model_id, model, name, field_description, ttype, - relation,view_load,state,select_level,relation_field + relation,view_load,state,select_level,relation_field, translate ) VALUES ( - %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s + %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s )""", ( id, vals['model_id'], vals['model'], vals['name'], vals['field_description'], vals['ttype'], vals['relation'], bool(vals['view_load']), 'base', - vals['select_level'], vals['relation_field'] + vals['select_level'], vals['relation_field'], bool(vals['translate']) )) if 'module' in context: name1 = 'field_' + self._table + '_' + k @@ -497,20 +558,118 @@ class orm_template(object): cr.commit() cr.execute("""UPDATE ir_model_fields SET model_id=%s, field_description=%s, ttype=%s, relation=%s, - view_load=%s, select_level=%s, readonly=%s ,required=%s, selectable=%s, relation_field=%s + view_load=%s, select_level=%s, readonly=%s ,required=%s, selectable=%s, relation_field=%s, translate=%s WHERE model=%s AND name=%s""", ( vals['model_id'], vals['field_description'], vals['ttype'], vals['relation'], bool(vals['view_load']), - vals['select_level'], bool(vals['readonly']), bool(vals['required']), bool(vals['selectable']), vals['relation_field'], vals['model'], vals['name'] + vals['select_level'], bool(vals['readonly']), bool(vals['required']), bool(vals['selectable']), vals['relation_field'], bool(vals['translate']), vals['model'], vals['name'] )) break cr.commit() def _auto_init(self, cr, context=None): + raise_on_invalid_object_name(self._name) self._field_create(cr, context=context) - def __init__(self, cr): + # + # Goal: try to apply inheritance at the instanciation level and + # put objects in the pool var + # + @classmethod + def makeInstance(cls, pool, cr, attributes): + """ Instanciate a given model. + + This class method instanciates the class of some model (i.e. a class + deriving from osv or osv_memory). The class might be the class passed + in argument or, if it inherits from another class, a class constructed + by combining the two classes. + + The ``attributes`` argument specifies which parent class attributes + have to be combined. + + TODO: the creation of the combined class is repeated at each call of + this method. This is probably unnecessary. + + """ + parent_names = getattr(cls, '_inherit', None) + if parent_names: + if isinstance(parent_names, (str, unicode)): + name = cls._name or parent_names + parent_names = [parent_names] + else: + name = cls._name + + if not name: + raise TypeError('_name is mandatory in case of multiple inheritance') + + for parent_name in ((type(parent_names)==list) and parent_names or [parent_names]): + parent_class = pool.get(parent_name).__class__ + if not pool.get(parent_name): + raise TypeError('The model "%s" specifies an unexisting parent class "%s"\n' + 'You may need to add a dependency on the parent class\' module.' % (name, parent_name)) + nattr = {} + for s in attributes: + new = copy.copy(getattr(pool.get(parent_name), s)) + if s == '_columns': + # Don't _inherit custom fields. + for c in new.keys(): + if new[c].manual: + del new[c] + if hasattr(new, 'update'): + new.update(cls.__dict__.get(s, {})) + elif s=='_constraints': + for c in cls.__dict__.get(s, []): + exist = False + for c2 in range(len(new)): + #For _constraints, we should check field and methods as well + if new[c2][2]==c[2] and (new[c2][0] == c[0] \ + or getattr(new[c2][0],'__name__', True) == \ + getattr(c[0],'__name__', False)): + # If new class defines a constraint with + # same function name, we let it override + # the old one. + new[c2] = c + exist = True + break + if not exist: + new.append(c) + else: + new.extend(cls.__dict__.get(s, [])) + nattr[s] = new + cls = type(name, (cls, parent_class), nattr) + obj = object.__new__(cls) + obj.__init__(pool, cr) + return obj + + def __new__(cls): + """ Register this model. + + This doesn't create an instance but simply register the model + as being part of the module where it is defined. + + TODO make it possible to not even have to call the constructor + to be registered. + + """ + + # Set the module name (e.g. base, sale, accounting, ...) on the class. + module = cls.__module__.split('.')[0] + if not hasattr(cls, '_module'): + cls._module = module + + # Remember which models to instanciate for this module. + module_class_list.setdefault(cls._module, []).append(cls) + + # Since we don't return an instance here, the __init__ + # method won't be called. + return None + + def __init__(self, pool, cr): + """ Initialize a model and make it part of the given registry.""" + pool.add(self._name, self) + self.pool = pool + if not self._name and not hasattr(self, '_inherit'): name = type(self).__name__.split('.')[0] msg = "The class %s has to have a _name attribute" % name @@ -736,7 +895,7 @@ class orm_template(object): id = ir_model_data[0]['res_id'] else: obj_model = self.pool.get(model_name) - ids = obj_model.name_search(cr, uid, id, operator='=') + ids = obj_model.name_search(cr, uid, id, operator='=', context=context) if not ids: raise ValueError('No record found for %s' % (id,)) id = ids[0][0] @@ -762,10 +921,12 @@ class orm_template(object): done = {} for i in range(len(fields)): res = False + if i >= len(line): + raise Exception(_('Please check that all your lines have %d columns.' + 'Stopped around line %d having %d columns.') % \ + (len(fields), position+2, len(line))) if not line[i]: continue - if i >= len(line): - raise Exception(_('Please check that all your lines have %d columns.') % (len(fields),)) field = fields[i] if field[:len(prefix)] <> prefix: @@ -838,14 +999,15 @@ class orm_template(object): res = line[i] and float(line[i]) or 0.0 elif fields_def[field[len(prefix)]]['type'] == 'selection': for key, val in fields_def[field[len(prefix)]]['selection']: - if line[i] in [tools.ustr(key), tools.ustr(val)]: + if tools.ustr(line[i]) in [tools.ustr(key), tools.ustr(val)]: res = key break if line[i] and not res: logger.notifyChannel("import", netsvc.LOG_WARNING, _("key '%s' not found in selection field '%s'") % \ - (line[i], field[len(prefix)])) - warning += [_("Key/value '%s' not found in selection field '%s'") % (line[i], field[len(prefix)])] + (tools.ustr(line[i]), tools.ustr(field[len(prefix)]))) + warning += [_("Key/value '%s' not found in selection field '%s'") % (tools.ustr(line[i]), tools.ustr(field[len(prefix)]))] + else: res = line[i] @@ -1896,8 +2058,12 @@ class orm_memory(orm_template): _max_hours = config.get('osv_memory_age_limit') _check_time = 20 - def __init__(self, cr): - super(orm_memory, self).__init__(cr) + @classmethod + def createInstance(cls, pool, cr): + return cls.makeInstance(pool, cr, ['_columns', '_defaults']) + + def __init__(self, pool, cr): + super(orm_memory, self).__init__(pool, cr) self.datas = {} self.next_id = 0 self.check_id = 0 @@ -2363,6 +2529,22 @@ class orm(orm_template): self._table, column['attname']) def _auto_init(self, cr, context=None): + """ + + Call _field_create and, unless _auto is False: + + - create the corresponding table in database for the model, + - possibly add the parent columns in database, + - possibly add the columns 'create_uid', 'create_date', 'write_uid', + 'write_date' in database if _log_access is True (the default), + - report on database columns no more existing in _columns, + - remove no more existing not null constraints, + - alter existing database columns to match _columns, + - create database tables to match _columns, + - add database indices to match _columns, + + """ + raise_on_invalid_object_name(self._name) if context is None: context = {} store_compute = False @@ -2768,8 +2950,22 @@ class orm(orm_template): cr.commit() return todo_end - def __init__(self, cr): - super(orm, self).__init__(cr) + @classmethod + def createInstance(cls, pool, cr): + return cls.makeInstance(pool, cr, ['_columns', '_defaults', + '_inherits', '_constraints', '_sql_constraints']) + + def __init__(self, pool, cr): + """ + + - copy the stored fields' functions in the osv_pool, + - update the _columns with the fields found in ir_model_fields, + - ensure there is a many2one for each _inherits'd parent, + - update the children's _columns, + - give a chance to each field to initialize itself. + + """ + super(orm, self).__init__(pool, cr) if not hasattr(self, '_log_access'): # if not access is not specify, it is the same value as _auto @@ -2826,6 +3022,7 @@ class orm(orm_template): 'size': field['size'], 'ondelete': field['on_delete'], 'translate': (field['translate']), + 'manual': True, #'select': int(field['select_level']) } @@ -2853,6 +3050,8 @@ class orm(orm_template): for f in self._columns: self._columns[f].restart() + __init__.__doc__ = orm_template.__init__.__doc__ + __init__.__doc__ + # # Update objects that uses this one to update their _inherits fields # @@ -3050,6 +3249,9 @@ class orm(orm_template): for key, val in todo.items(): if key: res2 = self._columns[val[0]].get(cr, self, ids, val, user, context=context, values=res) + assert res2 is not None, \ + 'The function field "%s" on the "%s" model returned None\n' \ + '(a dictionary was expected).' % (val[0], self._name) for pos in val: for record in res: if isinstance(res2[record['id']], str): res2[record['id']] = eval(res2[record['id']]) #TOCHECK : why got string instend of dict in python2.6 @@ -3229,7 +3431,7 @@ class orm(orm_template): self.check_access_rule(cr, uid, ids, 'unlink', context=context) pool_model_data = self.pool.get('ir.model.data') - pool_ir_values = self.pool.get('ir.values') + ir_values_obj = self.pool.get('ir.values') for sub_ids in cr.split_for_in_conditions(ids): cr.execute('delete from ' + self._table + ' ' \ 'where id IN %s', (sub_ids,)) @@ -3243,11 +3445,11 @@ class orm(orm_template): pool_model_data.unlink(cr, uid, reference_ids, context=context) # For the same reason, removing the record relevant to ir_values - ir_value_ids = pool_ir_values.search(cr, uid, + ir_value_ids = ir_values_obj.search(cr, uid, ['|',('value','in',['%s,%s' % (self._name, sid) for sid in sub_ids]),'&',('res_id','in',list(sub_ids)),('model','=',self._name)], context=context) if ir_value_ids: - pool_ir_values.unlink(cr, uid, ir_value_ids, context=context) + ir_values_obj.unlink(cr, uid, ir_value_ids, context=context) for order, object, store_ids, fields in result_store: if object != self._name: @@ -3532,7 +3734,10 @@ class orm(orm_template): # def create(self, cr, user, vals, context=None): """ - Create new record with specified value + Create a new record for the model. + + The values for the new record are initialized using the ``vals`` + argument, and if necessary the result of ``default_get()``. :param cr: database cursor :param user: current user id diff --git a/openerp/osv/osv.py b/openerp/osv/osv.py index 23e67b00334..ae25d82893b 100644 --- a/openerp/osv/osv.py +++ b/openerp/osv/osv.py @@ -23,18 +23,18 @@ # OSV: Objects Services # +import sys +import inspect import orm import openerp.netsvc as netsvc import openerp.pooler as pooler +import openerp.sql_db as sql_db import copy import logging from psycopg2 import IntegrityError, errorcodes from openerp.tools.func import wraps from openerp.tools.translate import translate - -module_list = [] -module_class_list = {} -class_pool = {} +from openerp.osv.orm import module_class_list class except_osv(Exception): def __init__(self, name, value, exc_type='warning'): @@ -92,7 +92,7 @@ class object_proxy(netsvc.Service): ids = args[3] else: ids = [] - cr = pooler.get_db_only(dbname).cursor() + cr = sql_db.db_connect(db_name).cursor() return src(obj, cr, uid, ids, context=(ctx or {})) except Exception: pass @@ -103,7 +103,7 @@ class object_proxy(netsvc.Service): # be returned, it is the best we have. try: - cr = pooler.get_db_only(dbname).cursor() + cr = sql_db.db_connect(db_name).cursor() res = translate(cr, name=False, source_type=ttype, lang=lang, source=src) if res: @@ -117,7 +117,7 @@ class object_proxy(netsvc.Service): return tr(src, 'code') try: - if not pooler.get_pool(dbname)._ready: + if pooler.get_pool(dbname)._init: raise except_osv('Database not ready', 'Currently, this database is not fully loaded and can not be used.') return f(self, dbname, *args, **kwargs) except orm.except_orm, inst: @@ -202,158 +202,64 @@ class object_proxy(netsvc.Service): cr.close() return res -object_proxy() class osv_pool(object): + """ Model registry for a particular database. + + The registry is essentially a mapping between model names and model + instances. There is one registry instance per database. + + """ + def __init__(self): - self._ready = False - self.obj_pool = {} - self.module_object_list = {} - self.created = [] + self.obj_pool = {} # model name/model instance mapping self._sql_error = {} self._store_function = {} self._init = True self._init_parent = {} - self.logger = logging.getLogger("pool") - - def init_set(self, cr, mode): - different = mode != self._init - if different: - if mode: - self._init_parent = {} - if not mode: - for o in self._init_parent: - self.get(o)._parent_store_compute(cr) - self._init = mode - - self._ready = True - return different + def do_parent_store(self, cr): + for o in self._init_parent: + self.get(o)._parent_store_compute(cr) + self._init = False def obj_list(self): + """ Return the list of model names in this registry.""" return self.obj_pool.keys() - # adds a new object instance to the object pool. - # if it already existed, the instance is replaced - def add(self, name, obj_inst): - if name in self.obj_pool: - del self.obj_pool[name] - self.obj_pool[name] = obj_inst - module = obj_inst.__class__.__module__.split('.')[0] - self.module_object_list.setdefault(module, []).append(obj_inst) + def add(self, model_name, model): + """ Add or replace a model in the registry.""" + self.obj_pool[model_name] = model - # Return None if object does not exist def get(self, name): - obj = self.obj_pool.get(name, None) - return obj + """ Return a model for a given name or None if it doesn't exist.""" + return self.obj_pool.get(name) - #TODO: pass a list of modules to load def instanciate(self, module, cr): + """ Instanciate all the classes of a given module for a particular db.""" + res = [] - class_list = module_class_list.get(module, []) - for klass in class_list: - res.append(klass.createInstance(self, module, cr)) + + # Instanciate classes registered through their constructor and + # add them to the pool. + for klass in module_class_list.get(module, []): + res.append(klass.createInstance(self, cr)) + return res -class osv_base(object): - def __init__(self, pool, cr): - pool.add(self._name, self) - self.pool = pool - super(osv_base, self).__init__(cr) - def __new__(cls): - module = cls.__module__.split('.')[0] - if not hasattr(cls, '_module'): - cls._module = module - module_class_list.setdefault(cls._module, []).append(cls) - class_pool[cls._name] = cls - if module not in module_list: - module_list.append(cls._module) - return None +class osv_memory(orm.orm_memory): + """ Deprecated class. """ + pass -class osv_memory(osv_base, orm.orm_memory): - # - # Goal: try to apply inheritancy at the instanciation level and - # put objects in the pool var - # - def createInstance(cls, pool, module, cr): - parent_names = getattr(cls, '_inherit', None) - if parent_names: - if isinstance(parent_names, (str, unicode)): - name = cls._name or parent_names - parent_names = [parent_names] - else: - name = cls._name - if not name: - raise TypeError('_name is mandatory in case of multiple inheritance') - for parent_name in ((type(parent_names)==list) and parent_names or [parent_names]): - parent_class = pool.get(parent_name).__class__ - assert pool.get(parent_name), "parent class %s does not exist in module %s !" % (parent_name, module) - nattr = {} - for s in ('_columns', '_defaults'): - new = copy.copy(getattr(pool.get(parent_name), s)) - if hasattr(new, 'update'): - new.update(cls.__dict__.get(s, {})) - else: - new.extend(cls.__dict__.get(s, [])) - nattr[s] = new - cls = type(name, (cls, parent_class), nattr) +class osv(orm.orm): + """ Deprecated class. """ + pass - obj = object.__new__(cls) - obj.__init__(pool, cr) - return obj - createInstance = classmethod(createInstance) -class osv(osv_base, orm.orm): - # - # Goal: try to apply inheritancy at the instanciation level and - # put objects in the pool var - # - def createInstance(cls, pool, module, cr): - parent_names = getattr(cls, '_inherit', None) - if parent_names: - if isinstance(parent_names, (str, unicode)): - name = cls._name or parent_names - parent_names = [parent_names] - else: - name = cls._name - if not name: - raise TypeError('_name is mandatory in case of multiple inheritance') - - for parent_name in ((type(parent_names)==list) and parent_names or [parent_names]): - parent_class = pool.get(parent_name).__class__ - assert pool.get(parent_name), "parent class %s does not exist in module %s !" % (parent_name, module) - nattr = {} - for s in ('_columns', '_defaults', '_inherits', '_constraints', '_sql_constraints'): - new = copy.copy(getattr(pool.get(parent_name), s)) - if hasattr(new, 'update'): - new.update(cls.__dict__.get(s, {})) - else: - if s=='_constraints': - for c in cls.__dict__.get(s, []): - exist = False - for c2 in range(len(new)): - #For _constraints, we should check field and methods as well - if new[c2][2]==c[2] and (new[c2][0] == c[0] \ - or getattr(new[c2][0],'__name__', True) == \ - getattr(c[0],'__name__', False)): - # If new class defines a constraint with - # same function name, we let it override - # the old one. - new[c2] = c - exist = True - break - if not exist: - new.append(c) - else: - new.extend(cls.__dict__.get(s, [])) - nattr[s] = new - cls = type(name, (cls, parent_class), nattr) - obj = object.__new__(cls) - obj.__init__(pool, cr) - return obj - createInstance = classmethod(createInstance) +def start_object_proxy(): + object_proxy() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/pooler.py b/openerp/pooler.py index 3b9875c18fc..aace66a5c84 100644 --- a/openerp/pooler.py +++ b/openerp/pooler.py @@ -19,64 +19,50 @@ # ############################################################################## -pool_dic = {} +""" Functions kept for backward compatibility. + + They are simple wrappers around a global RegistryManager methods. + +""" + +from openerp.modules.registry import RegistryManager + +_Registries = None + + +def ensure_registries(): + global _Registries + if _Registries is None: + _Registries = RegistryManager() + def get_db_and_pool(db_name, force_demo=False, status=None, update_module=False, pooljobs=True): - if not status: - status={} + """Create and return a database connection and a newly initialized registry.""" + ensure_registries() + bound_registry = _Registries.get(db_name, force_demo, status, update_module, pooljobs) + return bound_registry.db, bound_registry.registry - db = get_db_only(db_name) - if db_name in pool_dic: - pool = pool_dic[db_name] - else: - import openerp.addons as addons - import openerp.osv.osv as osv_osv - pool = osv_osv.osv_pool() - pool_dic[db_name] = pool - - try: - addons.load_modules(db, force_demo, status, update_module) - except Exception: - del pool_dic[db_name] - raise - - cr = db.cursor() - try: - pool.init_set(cr, False) - pool.get('ir.actions.report.xml').register_all(cr) - cr.commit() - finally: - cr.close() - - if pooljobs: - pool.get('ir.cron').restart(db.dbname) - return db, pool +def delete_pool(db_name): + """Delete an existing registry.""" + ensure_registries() + _Registries.delete(db_name) def restart_pool(db_name, force_demo=False, status=None, update_module=False): - if db_name in pool_dic: - del pool_dic[db_name] - return get_db_and_pool(db_name, force_demo, status, update_module=update_module) - - -def get_db_only(db_name): - # ATTENTION: - # do not put this import outside this function - # sql_db must not be loaded before the logger is initialized. - # sql_db import psycopg2.tool which create a default logger if there is not. - # this resulting of having the logs outputed twice... - import openerp.sql_db as sql_db - db = sql_db.db_connect(db_name) - return db + """Delete an existing registry and return a database connection and a newly initialized registry.""" + ensure_registries() + bound_registry = _Registries.new(db_name, force_demo, status, update_module, True) + return bound_registry.db, bound_registry.registry def get_db(db_name): + """Return a database connection. The corresponding registry is initialized.""" return get_db_and_pool(db_name)[0] def get_pool(db_name, force_demo=False, status=None, update_module=False): - pool = get_db_and_pool(db_name, force_demo, status, update_module)[1] - return pool + """Return a model registry.""" + return get_db_and_pool(db_name, force_demo, status, update_module)[1] # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/report/interface.py b/openerp/report/interface.py index 5bb1224a549..178c015ba34 100644 --- a/openerp/report/interface.py +++ b/openerp/report/interface.py @@ -27,7 +27,7 @@ import openerp.netsvc as netsvc import openerp.pooler as pooler import openerp.tools as tools -import openerp.addons as addons +import openerp.modules import print_xml import render import urllib @@ -119,7 +119,7 @@ class report_rml(report_int): pos_xml = i.end() doc = print_xml.document(cr, uid, {}, {}) - tmpl_path = addons.get_module_resource('base', 'report', 'corporate_defaults.xml') + tmpl_path = openerp.modules.get_module_resource('base', 'report', 'corporate_defaults.xml') doc.parse(tmpl_path, [uid], 'res.users', context) corporate_header = doc.xml_get() doc.close() diff --git a/openerp/report/render/__init__.py b/openerp/report/render/__init__.py index 1d0a4464e0b..1becd5ee514 100644 --- a/openerp/report/render/__init__.py +++ b/openerp/report/render/__init__.py @@ -27,7 +27,7 @@ try: import Image except ImportError: import logging - logging.getLogger('init').warning('Python Imaging not installed, you can use only .JPG pictures !') + logging.warning('Python Imaging not installed, you can use only .JPG pictures !') # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/report/render/rml2pdf/trml2pdf.py b/openerp/report/render/rml2pdf/trml2pdf.py index 26a7803a33a..e083062e302 100644 --- a/openerp/report/render/rml2pdf/trml2pdf.py +++ b/openerp/report/render/rml2pdf/trml2pdf.py @@ -795,10 +795,10 @@ class _rml_flowable(object): return False else: import base64 + newtext = node.text if self.localcontext: newtext = utils._process_text(self, node.text or '') - node.text = newtext - image_data = base64.decodestring(node.text) + image_data = base64.decodestring(newtext) if not image_data: self._logger.debug("No inline image data") return False diff --git a/openerp/service/__init__.py b/openerp/service/__init__.py index 529acbec628..a5f28e95678 100644 --- a/openerp/service/__init__.py +++ b/openerp/service/__init__.py @@ -19,6 +19,8 @@ # ############################################################################## +import http_server +import netrpc_server import web_services diff --git a/openerp/service/web_services.py b/openerp/service/web_services.py index 2455d250a94..10ab738c15b 100644 --- a/openerp/service/web_services.py +++ b/openerp/service/web_services.py @@ -28,13 +28,12 @@ import time import sys import platform from openerp.tools.translate import _ -import openerp.addons as addons -import openerp.ir import openerp.netsvc as netsvc import openerp.pooler as pooler import openerp.release as release import openerp.sql_db as sql_db import openerp.tools as tools +import openerp.modules import locale import logging from cStringIO import StringIO @@ -91,12 +90,7 @@ class db(netsvc.ExportService): cr = None try: serv.actions[id]['progress'] = 0 - cr = sql_db.db_connect(db_name).cursor() - tools.init_db(cr) tools.config['lang'] = lang - cr.commit() - cr.close() - cr = None pool = pooler.restart_pool(db_name, demo, serv.actions[id], update_module=True)[1] @@ -139,7 +133,7 @@ class db(netsvc.ExportService): def exp_get_progress(self, id): if self.actions[id]['thread'].isAlive(): -# return addons.init_progress[db_name] +# return openerp.modules.init_progress[db_name] return (min(self.actions[id].get('progress', 0),0.95), []) else: clean = self.actions[id]['clean'] @@ -154,6 +148,7 @@ class db(netsvc.ExportService): def exp_drop(self, db_name): sql_db.close_db(db_name) + openerp.netsvc.Agent.cancel(db_name) logger = netsvc.Logger() db = sql_db.db_connect('template1') @@ -256,6 +251,7 @@ class db(netsvc.ExportService): def exp_rename(self, old_name, new_name): sql_db.close_db(old_name) + openerp.netsvc.Agent.cancel(db_name) logger = netsvc.Logger() db = sql_db.db_connect('template1') @@ -346,7 +342,6 @@ class db(netsvc.ExportService): l.notifyChannel('web-services', netsvc.LOG_ERROR, tb_s) raise return True -db() class _ObjectService(netsvc.ExportService): "A common base class for those who have fn(db, uid, password,...) " @@ -369,8 +364,6 @@ class common(_ObjectService): def dispatch(self, method, auth, params): logger = netsvc.Logger() - if method in [ 'ir_set','ir_del', 'ir_get' ]: - return self.common_dispatch(method,auth,params) if method == 'login': # At this old dispatcher, we do NOT update the auth proxy res = security.login(params[0], params[1], params[2]) @@ -401,22 +394,6 @@ class common(_ObjectService): def new_dispatch(self,method,auth,params): pass - def exp_ir_set(self, cr, uid, keys, args, name, value, replace=True, isobject=False): - res = ir.ir_set(cr,uid, keys, args, name, value, replace, isobject) - return res - - def exp_ir_del(self, cr, uid, id): - res = ir.ir_del(cr,uid, id) - return res - - def exp_ir_get(self, cr, uid, keys, args=None, meta=None, context=None): - if not args: - args=[] - if not context: - context={} - res = ir.ir_get(cr,uid, keys, args, meta, context) - return res - def exp_about(self, extended=False): """Return information about the OpenERP Server. @@ -447,7 +424,7 @@ GNU Public Licence. if not rc.id: raise tm.RemoteContractException('This contract does not exist or is not active') - return rc.get_available_updates(rc.id, addons.get_modules_with_version()) + return rc.get_available_updates(rc.id, openerp.modules.get_modules_with_version()) except tm.RemoteContractException, e: self.abortResponse(1, 'Migration Error', 'warning', str(e)) @@ -465,7 +442,7 @@ GNU Public Licence. l.notifyChannel('migration', netsvc.LOG_INFO, 'starting migration with contract %s' % (rc.name,)) - zips = rc.retrieve_updates(rc.id, addons.get_modules_with_version()) + zips = rc.retrieve_updates(rc.id, openerp.modules.get_modules_with_version()) from shutil import rmtree, copytree, copy @@ -477,7 +454,7 @@ GNU Public Licence. for module in zips: l.notifyChannel('migration', netsvc.LOG_INFO, 'upgrade module %s' % (module,)) - mp = addons.get_module_path(module) + mp = openerp.modules.get_module_path(module) if mp: if os.path.isdir(mp): copytree(mp, os.path.join(backup_directory, module)) @@ -578,7 +555,6 @@ GNU Public Licence. logger.warning("Counters of SQL will not be reliable unless DEBUG_SQL is set at the server's config.") return sql_db.sql_counter -common() class objects_proxy(netsvc.ExportService): def __init__(self, name="object"): @@ -602,8 +578,6 @@ class objects_proxy(netsvc.ExportService): def new_dispatch(self,method,auth,params): pass -objects_proxy() - # # Wizard ID: 1 @@ -664,7 +638,6 @@ class wizard(netsvc.ExportService): raise Exception, 'AccessDenied' else: raise Exception, 'WizardNotFound' -wizard() # # TODO: set a maximum report number per user to avoid DOS attacks @@ -778,7 +751,13 @@ class report_spool(netsvc.ExportService): else: raise Exception, 'ReportNotFound' -report_spool() + +def start_web_services(): + db() + common() + objects_proxy() + wizard() + report_spool() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/sql_db.py b/openerp/sql_db.py index 8afd684d3f1..e759a13e1d3 100644 --- a/openerp/sql_db.py +++ b/openerp/sql_db.py @@ -54,7 +54,6 @@ psycopg2.extensions.register_type(psycopg2.extensions.new_type((700, 701, 1700,) import tools from tools.func import wraps, frame_codeinfo -from netsvc import Agent from datetime import datetime as mdt from datetime import timedelta import threading @@ -68,17 +67,22 @@ sql_counter = 0 class Cursor(object): IN_MAX = 1000 # decent limit on size of IN queries - guideline = Oracle limit - __logger = logging.getLogger('db.cursor') + __logger = None def check(f): @wraps(f) def wrapper(self, *args, **kwargs): if self.__closed: - raise psycopg2.OperationalError('Unable to use the cursor after having closed it') + msg = 'Unable to use a closed cursor.' + if self.__closer: + msg += ' It was closed at %s, line %s' % self.__closer + raise psycopg2.OperationalError(msg) return f(self, *args, **kwargs) return wrapper def __init__(self, pool, dbname, serialized=False): + if self.__class__.__logger is None: + self.__class__.__logger = logging.getLogger('db.cursor') self.sql_from_log = {} self.sql_into_log = {} @@ -100,6 +104,7 @@ class Cursor(object): self.__caller = frame_codeinfo(currentframe(),2) else: self.__caller = False + self.__closer = False def __del__(self): if not self.__closed: @@ -198,6 +203,8 @@ class Cursor(object): if not self._obj: return + if self.sql_log: + self.__closer = frame_codeinfo(currentframe(),3) self.print_log() if not self._serialized: @@ -375,15 +382,18 @@ def dsn_are_equals(first, second): return key(first) == key(second) -_Pool = ConnectionPool(int(tools.config['db_maxconn'])) +_Pool = None def db_connect(db_name): + global _Pool + if _Pool is None: + _Pool = ConnectionPool(int(tools.config['db_maxconn'])) currentThread().dbname = db_name return Connection(_Pool, db_name) def close_db(db_name): + """ You might want to call openerp.netsvc.Agent.cancel(db_name) along this function.""" _Pool.close_all(dsn(db_name)) - Agent.cancel(db_name) tools.cache.clean_caches_for_db(db_name) ct = currentThread() if hasattr(ct, 'dbname'): diff --git a/openerp/tools/config.py b/openerp/tools/config.py index edceb08f475..8fb1ecd04f4 100644 --- a/openerp/tools/config.py +++ b/openerp/tools/config.py @@ -39,67 +39,21 @@ def check_ssl(): class configmanager(object): def __init__(self, fname=None): + # Options not exposed on the command line. Command line options will be added + # from optparse's parser. self.options = { - 'email_from':False, - 'xmlrpc_interface': '', # this will bind the server to all interfaces - 'xmlrpc_port': 8069, - 'netrpc_interface': '', - 'netrpc_port': 8070, - 'xmlrpcs_interface': '', # this will bind the server to all interfaces - 'xmlrpcs_port': 8071, - 'db_host': False, - 'db_port': False, - 'db_name': False, - 'db_user': False, - 'db_password': False, - 'db_maxconn': 64, - 'reportgz': False, - 'netrpc': True, - 'xmlrpc': True, - 'xmlrpcs': True, - 'translate_in': None, - 'translate_out': None, - 'overwrite_existing_translations': False, - 'load_language': None, - 'language': None, - 'pg_path': None, 'admin_passwd': 'admin', 'csv_internal_sep': ',', - 'addons_path': None, - 'root_path': None, - 'debug_mode': False, - 'import_partial': "", - 'pidfile': None, - 'logfile': None, - 'logrotate': True, - 'smtp_server': 'localhost', - 'smtp_user': False, - 'smtp_port':25, - 'smtp_ssl':False, - 'smtp_password': False, - 'stop_after_init': False, # this will stop the server after initialization - 'syslog' : False, - 'log_level': logging.INFO, - 'assert_exit_level': logging.ERROR, # level above which a failed assert will be raised - 'cache_timeout': 100000, 'login_message': False, - 'list_db' : True, - 'timezone' : False, # to override the default TZ - 'test_file' : False, - 'test_report_directory' : False, - 'test_disable' : False, - 'test_commit' : False, - 'static_http_enable': False, - 'static_http_document_root': None, - 'static_http_url_prefix': None, - 'secure_cert_file': 'server.cert', - 'secure_pkey_file': 'server.pkey', 'publisher_warranty_url': 'http://services.openerp.com/publisher-warranty/', - 'osv_memory_count_limit': None, # number of records in each osv_memory virtual table - 'osv_memory_age_limit': 1, # hours + 'reportgz': False, + 'root_path': None, } - self.blacklist_for_save = set(["publisher_warranty_url", "load_language", "root_path"]) + # Not exposed in the configuration file. + self.blacklist_for_save = set( + ['publisher_warranty_url', 'load_language', 'root_path', + 'init', 'save', 'config', 'update']) self.misc = {} self.config_file = fname @@ -122,15 +76,18 @@ class configmanager(object): group.add_option("--without-demo", dest="without_demo", help="disable loading demo data for modules to be installed (comma-separated, use \"all\" for all modules). Requires -d and -i. Default is %default", default=False) - group.add_option("-P", "--import-partial", dest="import_partial", - help="Use this for big data importation, if it crashes you will be able to continue at the current state. Provide a filename to store intermediate importation states.", default=False) + group.add_option("-P", "--import-partial", dest="import_partial", default='', + help="Use this for big data importation, if it crashes you will be able to continue at the current state. Provide a filename to store intermediate importation states.") group.add_option("--pidfile", dest="pidfile", help="file where the server pid will be stored") parser.add_option_group(group) group = optparse.OptionGroup(parser, "XML-RPC Configuration") - group.add_option("--xmlrpc-interface", dest="xmlrpc_interface", help="specify the TCP IP address for the XML-RPC protocol") - group.add_option("--xmlrpc-port", dest="xmlrpc_port", help="specify the TCP port for the XML-RPC protocol", type="int") - group.add_option("--no-xmlrpc", dest="xmlrpc", action="store_false", help="disable the XML-RPC protocol") + group.add_option("--xmlrpc-interface", dest="xmlrpc_interface", default='', + help="Specify the TCP IP address for the XML-RPC protocol. The empty string binds to all interfaces.") + group.add_option("--xmlrpc-port", dest="xmlrpc_port", default=8069, + help="specify the TCP port for the XML-RPC protocol", type="int") + group.add_option("--no-xmlrpc", dest="xmlrpc", action="store_false", default=True, + help="disable the XML-RPC protocol") parser.add_option_group(group) title = "XML-RPC Secure Configuration" @@ -138,18 +95,26 @@ class configmanager(object): title += " (disabled as ssl is unavailable)" group = optparse.OptionGroup(parser, title) - group.add_option("--xmlrpcs-interface", dest="xmlrpcs_interface", help="specify the TCP IP address for the XML-RPC Secure protocol") - group.add_option("--xmlrpcs-port", dest="xmlrpcs_port", help="specify the TCP port for the XML-RPC Secure protocol", type="int") - group.add_option("--no-xmlrpcs", dest="xmlrpcs", action="store_false", help="disable the XML-RPC Secure protocol") - group.add_option("--cert-file", dest="secure_cert_file", help="specify the certificate file for the SSL connection") - group.add_option("--pkey-file", dest="secure_pkey_file", help="specify the private key file for the SSL connection") + group.add_option("--xmlrpcs-interface", dest="xmlrpcs_interface", default='', + help="Specify the TCP IP address for the XML-RPC Secure protocol. The empty string binds to all interfaces.") + group.add_option("--xmlrpcs-port", dest="xmlrpcs_port", default=8071, + help="specify the TCP port for the XML-RPC Secure protocol", type="int") + group.add_option("--no-xmlrpcs", dest="xmlrpcs", action="store_false", default=True, + help="disable the XML-RPC Secure protocol") + group.add_option("--cert-file", dest="secure_cert_file", default='server.cert', + help="specify the certificate file for the SSL connection") + group.add_option("--pkey-file", dest="secure_pkey_file", default='server.pkey', + help="specify the private key file for the SSL connection") parser.add_option_group(group) # NET-RPC group = optparse.OptionGroup(parser, "NET-RPC Configuration") - group.add_option("--netrpc-interface", dest="netrpc_interface", help="specify the TCP IP address for the NETRPC protocol") - group.add_option("--netrpc-port", dest="netrpc_port", help="specify the TCP port for the NETRPC protocol", type="int") - group.add_option("--no-netrpc", dest="netrpc", action="store_false", help="disable the NETRPC protocol") + group.add_option("--netrpc-interface", dest="netrpc_interface", default='', + help="specify the TCP IP address for the NETRPC protocol") + group.add_option("--netrpc-port", dest="netrpc_port", default=8070, + help="specify the TCP port for the NETRPC protocol", type="int") + group.add_option("--no-netrpc", dest="netrpc", action="store_false", default=True, + help="disable the NETRPC protocol") parser.add_option_group(group) # Static HTTP @@ -161,45 +126,60 @@ class configmanager(object): # Testing Group group = optparse.OptionGroup(parser, "Testing Configuration") - group.add_option("--test-file", dest="test_file", help="Launch a YML test file.") - group.add_option("--test-report-directory", dest="test_report_directory", help="If set, will save sample of all reports in this directory.") + group.add_option("--test-file", dest="test_file", default=False, + help="Launch a YML test file.") + group.add_option("--test-report-directory", dest="test_report_directory", default=False, + help="If set, will save sample of all reports in this directory.") group.add_option("--test-disable", action="store_true", dest="test_disable", default=False, help="Disable loading test files.") group.add_option("--test-commit", action="store_true", dest="test_commit", default=False, help="Commit database changes performed by tests.") group.add_option("--assert-exit-level", dest='assert_exit_level', type="choice", choices=self._LOGLEVELS.keys(), - help="specify the level at which a failed assertion will stop the server. Accepted values: %s" % (self._LOGLEVELS.keys(),)) + default='error', + help="specify the level at which a failed assertion will stop the server. Accepted values: %s" % (self._LOGLEVELS.keys(),)) parser.add_option_group(group) # Logging Group group = optparse.OptionGroup(parser, "Logging Configuration") group.add_option("--logfile", dest="logfile", help="file where the server log will be stored") - group.add_option("--no-logrotate", dest="logrotate", action="store_false", + group.add_option("--no-logrotate", dest="logrotate", action="store_false", default=True, help="do not rotate the logfile") group.add_option("--syslog", action="store_true", dest="syslog", default=False, help="Send the log to the syslog server") group.add_option('--log-level', dest='log_level', type='choice', choices=self._LOGLEVELS.keys(), + default='info', help='specify the level of the logging. Accepted values: ' + str(self._LOGLEVELS.keys())) parser.add_option_group(group) # SMTP Group group = optparse.OptionGroup(parser, "SMTP Configuration") - group.add_option('--email-from', dest='email_from', help='specify the SMTP email address for sending email') - group.add_option('--smtp', dest='smtp_server', help='specify the SMTP server for sending email') - group.add_option('--smtp-port', dest='smtp_port', help='specify the SMTP port', type="int") - group.add_option('--smtp-ssl', dest='smtp_ssl', action='store_true', help='specify the SMTP server support SSL or not') - group.add_option('--smtp-user', dest='smtp_user', help='specify the SMTP username for sending email') - group.add_option('--smtp-password', dest='smtp_password', help='specify the SMTP password for sending email') + group.add_option('--email-from', dest='email_from', default=False, + help='specify the SMTP email address for sending email') + group.add_option('--smtp', dest='smtp_server', default='localhost', + help='specify the SMTP server for sending email') + group.add_option('--smtp-port', dest='smtp_port', default=25, + help='specify the SMTP port', type="int") + group.add_option('--smtp-ssl', dest='smtp_ssl', action='store_true', default=False, + help='specify the SMTP server support SSL or not') + group.add_option('--smtp-user', dest='smtp_user', default=False, + help='specify the SMTP username for sending email') + group.add_option('--smtp-password', dest='smtp_password', default=False, + help='specify the SMTP password for sending email') parser.add_option_group(group) group = optparse.OptionGroup(parser, "Database related options") - group.add_option("-d", "--database", dest="db_name", help="specify the database name") - group.add_option("-r", "--db_user", dest="db_user", help="specify the database user name") - group.add_option("-w", "--db_password", dest="db_password", help="specify the database password") + group.add_option("-d", "--database", dest="db_name", default=False, + help="specify the database name") + group.add_option("-r", "--db_user", dest="db_user", default=False, + help="specify the database user name") + group.add_option("-w", "--db_password", dest="db_password", default=False, + help="specify the database password") group.add_option("--pg_path", dest="pg_path", help="specify the pg executable path") - group.add_option("--db_host", dest="db_host", help="specify the database host") - group.add_option("--db_port", dest="db_port", help="specify the database port", type="int") - group.add_option("--db_maxconn", dest="db_maxconn", type='int', + group.add_option("--db_host", dest="db_host", default=False, + help="specify the database host") + group.add_option("--db_port", dest="db_port", default=False, + help="specify the database port", type="int") + group.add_option("--db_maxconn", dest="db_maxconn", type='int', default=64, help="specify the the maximum number of physical connections to posgresql") parser.add_option_group(group) @@ -211,32 +191,35 @@ class configmanager(object): group.add_option('--load-language', dest="load_language", help="specifies the languages for the translations you want to be loaded") group.add_option('-l', "--language", dest="language", + default=None, help="specify the language of the translation file. Use it with --i18n-export or --i18n-import") group.add_option("--i18n-export", dest="translate_out", help="export all sentences to be translated to a CSV file, a PO file or a TGZ archive and exit") group.add_option("--i18n-import", dest="translate_in", help="import a CSV or a PO file with translations and exit. The '-l' option is required.") group.add_option("--i18n-overwrite", dest="overwrite_existing_translations", action="store_true", default=False, - help="overwrites existing translation terms on importing a CSV or a PO file.") + help="overwrites existing translation terms on updating a module or importing a CSV or a PO file.") group.add_option("--modules", dest="translate_modules", help="specify modules to export. Use in combination with --i18n-export") group.add_option("--addons-path", dest="addons_path", - help="specify an alternative addons path.", + help="specify additional addons paths (separated by commas).", action="callback", callback=self._check_addons_path, nargs=1, type="string") parser.add_option_group(group) security = optparse.OptionGroup(parser, 'Security-related options') - security.add_option('--no-database-list', action="store_false", dest='list_db', help="disable the ability to return the list of databases") + security.add_option('--no-database-list', action="store_false", dest='list_db', default=True, + help="disable the ability to return the list of databases") parser.add_option_group(security) # Advanced options group = optparse.OptionGroup(parser, "Advanced options") - group.add_option("--cache-timeout", dest="cache_timeout", + group.add_option("--cache-timeout", dest="cache_timeout", default=100000, help="set the timeout for the cache system", type="int") group.add_option('--debug', dest='debug_mode', action='store_true', default=False, help='enable debug mode') group.add_option("--stop-after-init", action="store_true", dest="stop_after_init", default=False, - help="stop the server after it initializes") - group.add_option("-t", "--timezone", dest="timezone", help="specify reference timezone for the server (e.g. Europe/Brussels") + help="stop the server after its initialization") + group.add_option("-t", "--timezone", dest="timezone", default=False, + help="specify reference timezone for the server (e.g. Europe/Brussels") group.add_option("--osv-memory-count-limit", dest="osv_memory_count_limit", default=False, help="Force a limit on the maximum number of records kept in the virtual " "osv_memory tables. The default is False, which means no count-based limit.", @@ -248,6 +231,14 @@ class configmanager(object): type="float") parser.add_option_group(group) + # Copy all optparse options into self.options. + for group in parser.option_groups: + for option in group.option_list: + if option.default == ('NO', 'DEFAULT'): + self.options[option.dest] = None + else: + self.options[option.dest] = option.default + self.parse_config() def parse_config(self, args=[]): @@ -266,8 +257,8 @@ class configmanager(object): die(opt.translate_in and (not opt.language or not opt.db_name), "the i18n-import option cannot be used without the language (-l) and the database (-d) options") - die(opt.overwrite_existing_translations and (not opt.translate_in), - "the i18n-overwrite option cannot be used without the i18n-import option") + die(opt.overwrite_existing_translations and not (opt.translate_in or opt.update), + "the i18n-overwrite option cannot be used without the i18n-import option or without the update option") die(opt.translate_out and (not opt.db_name), "the i18n-export option cannot be used without the database (-d) option") @@ -435,26 +426,28 @@ class configmanager(object): import stat os.chmod(filename, stat.S_IRUSR + stat.S_IWUSR) + def _is_addons_path(self, path): + for f in os.listdir(path): + modpath = os.path.join(path, f) + if os.path.isdir(modpath): + def hasfile(filename): + return os.path.isfile(os.path.join(modpath, filename)) + if hasfile('__init__.py') and (hasfile('__openerp__.py') or hasfile('__terp__.py')): + return True + return False + def _check_addons_path(self, option, opt, value, parser): - res = os.path.abspath(os.path.expanduser(value)) - if not os.path.exists(res): - raise optparse.OptionValueError("option %s: no such directory: %r" % (opt, value)) + ad_paths = [] + for path in value.split(','): + path = path.strip() + res = os.path.abspath(os.path.expanduser(path)) + if not os.path.isdir(res): + raise optparse.OptionValueError("option %s: no such directory: %r" % (opt, path)) + if not self._is_addons_path(res): + raise optparse.OptionValueError("option %s: The addons-path %r does not seem to a be a valid Addons Directory!" % (opt, path)) + ad_paths.append(res) - contains_addons = False - for f in os.listdir(res): - modpath = os.path.join(res, f) - if os.path.isdir(modpath) and \ - os.path.exists(os.path.join(modpath, '__init__.py')) and \ - (os.path.exists(os.path.join(modpath, '__openerp__.py')) or \ - os.path.exists(os.path.join(modpath, '__terp__.py'))): - - contains_addons = True - break - - if not contains_addons: - raise optparse.OptionValueError("option %s: The addons-path %r does not seem to a be a valid Addons Directory!" % (opt, value)) - - setattr(parser.values, option.dest, res) + setattr(parser.values, option.dest, ",".join(ad_paths)) def load(self): p = ConfigParser.ConfigParser() diff --git a/openerp/tools/convert.py b/openerp/tools/convert.py index dd3a3d4a285..d0e6b503142 100644 --- a/openerp/tools/convert.py +++ b/openerp/tools/convert.py @@ -303,9 +303,10 @@ form: module.record_id""" % (xml_id,) self.pool.get(d_model).unlink(cr, self.uid, ids) def _remove_ir_values(self, cr, name, value, model): - ir_value_ids = self.pool.get('ir.values').search(cr, self.uid, [('name','=',name),('value','=',value),('model','=',model)]) + ir_values_obj = self.pool.get('ir.values') + ir_value_ids = ir_values_obj.search(cr, self.uid, [('name','=',name),('value','=',value),('model','=',model)]) if ir_value_ids: - self.pool.get('ir.values').unlink(cr, self.uid, ir_value_ids) + ir_values_obj.unlink(cr, self.uid, ir_value_ids) return True diff --git a/openerp/tools/misc.py b/openerp/tools/misc.py index e1a6a717e87..5aa01d4f267 100644 --- a/openerp/tools/misc.py +++ b/openerp/tools/misc.py @@ -69,76 +69,6 @@ _logger = logging.getLogger('tools') # We include the *Base ones just in case, currently they seem to be subclasses of the _* ones. SKIPPED_ELEMENT_TYPES = (etree._Comment, etree._ProcessingInstruction, etree.CommentBase, etree.PIBase) -# initialize a database with base/base.sql -def init_db(cr): - import openerp.addons as addons - f = addons.get_module_resource('base', 'base.sql') - base_sql_file = file_open(f) - try: - cr.execute(base_sql_file.read()) - cr.commit() - finally: - base_sql_file.close() - - for i in addons.get_modules(): - mod_path = addons.get_module_path(i) - if not mod_path: - continue - - info = addons.load_information_from_description_file(i) - - if not info: - continue - categs = info.get('category', 'Uncategorized').split('/') - p_id = None - while categs: - if p_id is not None: - cr.execute('SELECT id \ - FROM ir_module_category \ - WHERE name=%s AND parent_id=%s', (categs[0], p_id)) - else: - cr.execute('SELECT id \ - FROM ir_module_category \ - WHERE name=%s AND parent_id IS NULL', (categs[0],)) - c_id = cr.fetchone() - if not c_id: - cr.execute('INSERT INTO ir_module_category \ - (name, parent_id) \ - VALUES (%s, %s) RETURNING id', (categs[0], p_id)) - c_id = cr.fetchone()[0] - else: - c_id = c_id[0] - p_id = c_id - categs = categs[1:] - - active = info.get('active', False) - installable = info.get('installable', True) - if installable: - if active: - state = 'to install' - else: - state = 'uninstalled' - else: - state = 'uninstallable' - cr.execute('INSERT INTO ir_module_module \ - (author, website, name, shortdesc, description, \ - category_id, state, certificate, web, license) \ - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) RETURNING id', ( - info.get('author', ''), - info.get('website', ''), i, info.get('name', False), - info.get('description', ''), p_id, state, info.get('certificate') or None, - info.get('web') or False, - info.get('license') or 'AGPL-3')) - id = cr.fetchone()[0] - cr.execute('INSERT INTO ir_model_data \ - (name,model,module, res_id, noupdate) VALUES (%s,%s,%s,%s,%s)', ( - 'module_meta_information', 'ir.module.module', i, id, True)) - dependencies = info.get('depends', []) - for d in dependencies: - cr.execute('INSERT INTO ir_module_module_dependency \ - (module_id,name) VALUES (%s, %s)', (id, d)) - cr.commit() - def find_in_path(name): try: return which(name) @@ -204,8 +134,8 @@ def file_open(name, mode="r", subdir='addons', pathinfo=False): @return: fileobject if pathinfo is False else (fileobject, filepath) """ - import openerp.addons as addons - adps = addons.ad_paths + import openerp.modules as addons + adps = addons.module.ad_paths rtp = os.path.normcase(os.path.abspath(config['root_path'])) if name.replace(os.path.sep, '/').startswith('addons/'): @@ -717,7 +647,28 @@ def is_hashable(h): except TypeError: return False -class cache(object): +class dummy_cache(object): + """ Cache decorator replacement to actually do no caching. + + This can be useful to benchmark and/or track memory leak. + + """ + + def __init__(self, timeout=None, skiparg=2, multi=None, size=8192): + pass + + def clear(self, dbname, *args, **kwargs): + pass + + @classmethod + def clean_caches_for_db(cls, dbname): + pass + + def __call__(self, fn): + fn.clear_cache = self.clear + return fn + +class real_cache(object): """ Use it as a decorator of the function you plan to cache Timeout: 0 = no timeout, otherwise in seconds @@ -842,6 +793,9 @@ class cache(object): cached_result.clear_cache = self.clear return cached_result +# TODO make it an option +cache = real_cache + def to_xml(s): return s.replace('&','&').replace('<','<').replace('>','>') diff --git a/openerp/tools/translate.py b/openerp/tools/translate.py index 9723135ff49..5761ba87cc0 100644 --- a/openerp/tools/translate.py +++ b/openerp/tools/translate.py @@ -27,6 +27,7 @@ import itertools import locale import os import openerp.pooler as pooler +import openerp.sql_db as sql_db import re import logging import tarfile @@ -160,7 +161,7 @@ class GettextAlias(object): # find current DB based on thread/worker db name (see netsvc) db_name = getattr(threading.currentThread(), 'dbname', None) if db_name: - return pooler.get_db_only(db_name) + return sql_db.db_connect(db_name) def _get_cr(self, frame): is_new_cr = False diff --git a/openerp/tools/yaml_import.py b/openerp/tools/yaml_import.py index a5052f68aed..2b6c0815e0d 100644 --- a/openerp/tools/yaml_import.py +++ b/openerp/tools/yaml_import.py @@ -114,7 +114,7 @@ class RecordDictWrapper(dict): records do not strictly behave like dict, so we force them to. """ def __init__(self, record): - self.record = record + self.record = record def __getitem__(self, key): if key in self.record: return self.record[key] @@ -174,10 +174,16 @@ class YamlInterpreter(object): else: module = self.module checked_xml_id = xml_id - _, id = self.pool.get('ir.model.data').get_object_reference(self.cr, self.uid, module, checked_xml_id) - self.id_map[xml_id] = id + try: + _, id = self.pool.get('ir.model.data').get_object_reference(self.cr, self.uid, module, checked_xml_id) + self.id_map[xml_id] = id + except ValueError, e: + raise ValueError("""%s not found when processing %s. + This Yaml file appears to depend on missing data. This often happens for + tests that belong to a module's test suite and depend on each other.""" % (checked_xml_id, self.filename)) + return id - + def get_context(self, node, eval_dict): context = self.context.copy() if node.context: @@ -186,7 +192,7 @@ class YamlInterpreter(object): def isnoupdate(self, node): return self.noupdate or node.noupdate or False - + def _get_first_result(self, results, default=False): if len(results): value = results[0] @@ -195,7 +201,7 @@ class YamlInterpreter(object): else: value = default return value - + def process_comment(self, node): return node @@ -419,7 +425,7 @@ class YamlInterpreter(object): raise else: self.assert_report.record(True, python.severity) - + def process_workflow(self, node): workflow, values = node.items()[0] if self.isnoupdate(workflow) and self.mode != 'init': @@ -438,7 +444,7 @@ class YamlInterpreter(object): local_context = {'obj': lambda x: value_model.browse(self.cr, self.uid, x, context=self.context)} local_context.update(self.id_map) id = eval(value['eval'], self.eval_context, local_context) - + if workflow.uid is not None: uid = workflow.uid else: @@ -450,7 +456,7 @@ class YamlInterpreter(object): import openerp.netsvc as netsvc wf_service = netsvc.LocalService("workflow") wf_service.trg_validate(uid, workflow.model, id, workflow.action, self.cr) - + def _eval_params(self, model, params): args = [] for i, param in enumerate(params): @@ -476,7 +482,7 @@ class YamlInterpreter(object): value = param # scalar value args.append(value) return args - + def process_function(self, node): function, params = node.items()[0] if self.isnoupdate(function) and self.mode != 'init': @@ -489,7 +495,7 @@ class YamlInterpreter(object): args = self._eval_params(function.model, params) method = function.name getattr(model, method)(self.cr, self.uid, *args) - + def _set_group_values(self, node, values): if node.groups: group_names = node.groups.split(',') @@ -570,7 +576,7 @@ class YamlInterpreter(object): values['icon'] = node.icon self._set_group_values(node, values) - + pid = self.pool.get('ir.model.data')._update(self.cr, 1, \ 'ir.ui.menu', self.module, values, node.id, mode=self.mode, \ noupdate=self.isnoupdate(node), res_id=res and res[0] or False) @@ -640,7 +646,7 @@ class YamlInterpreter(object): self.pool.get('ir.model.data')._unlink(self.cr, 1, node.model, ids) else: self.logger.log(logging.TEST, "Record not deleted.") - + def process_url(self, node): self.validate_xml_id(node.id) @@ -657,7 +663,7 @@ class YamlInterpreter(object): self.pool.get('ir.model.data').ir_set(self.cr, 1, 'action', \ keyword, node.url, ["ir.actions.url"], value, replace=replace, \ noupdate=self.isnoupdate(node), isobject=True, xml_id=node.id) - + def process_ir_set(self, node): if not self.mode == 'init': return False @@ -708,13 +714,13 @@ class YamlInterpreter(object): replace = node.replace or True self.pool.get('ir.model.data').ir_set(self.cr, 1, 'action', \ keyword, values['name'], [values['model']], value, replace=replace, isobject=True, xml_id=xml_id) - + def process_none(self): """ Empty node or commented node should not pass silently. """ self._log_assert_failure(logging.WARNING, "You have an empty block in your tests.") - + def process(self, yaml_string): """ @@ -732,7 +738,7 @@ class YamlInterpreter(object): except Exception, e: self.logger.exception(e) raise - + def _process_node(self, node): if is_comment(node): self.process_comment(node) @@ -770,7 +776,7 @@ class YamlInterpreter(object): self.process_none() else: raise YamlImportException("Can not process YAML block: %s" % node) - + def _log(self, node, is_preceded_by_comment): if is_comment(node): is_preceded_by_comment = True @@ -786,7 +792,7 @@ class YamlInterpreter(object): is_preceded_by_comment = False return is_preceded_by_comment -def yaml_import(cr, module, yamlfile, idref=None, mode='init', noupdate=False, report=None): +def yaml_import(cr, module, yamlfile, idref=None, mode='init', noupdate=False): if idref is None: idref = {} yaml_string = yamlfile.read() diff --git a/openerp/wizard/__init__.py b/openerp/wizard/__init__.py index ea7ee713be4..df0b942d0df 100644 --- a/openerp/wizard/__init__.py +++ b/openerp/wizard/__init__.py @@ -25,7 +25,6 @@ from openerp.tools.misc import UpdateableStr, UpdateableDict from openerp.tools.translate import translate from lxml import etree -import openerp.ir as ir import openerp.pooler as pooler from openerp.osv.osv import except_osv @@ -90,7 +89,8 @@ class interface(netsvc.Service): arch = arch.string # fetch user-set defaut values for the field... shouldn't we pass it the uid? - defaults = ir.ir_get(cr, uid, 'default', False, [('wizard.'+self.wiz_name, False)]) + ir_values_obj = pooler.get_pool(cr.dbname).get('ir.values') + defaults = ir_values_obj.get(cr, uid, 'default', False, [('wizard.'+self.wiz_name, False)]) default_values = dict([(x[1], x[2]) for x in defaults]) for val in fields.keys(): if 'default' in fields[val]: diff --git a/tools/module_graph.py b/tools/module_graph.py index 05bb058a447..b29bd316e2f 100755 --- a/tools/module_graph.py +++ b/tools/module_graph.py @@ -27,6 +27,7 @@ import optparse import sys import glob +# TODO use the same function provided in openerp.modules def load_information_from_description_file(module): """ :param module: The name of the module (sale, purchase, ...)