# HG changeset patch # User Thierry Florac # Date 1424339701 -3600 # Node ID 9c21b8e2ba463ca60f586fd71a5321e7d2353636 First commit diff -r 000000000000 -r 9c21b8e2ba46 .hgignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,19 @@ + +syntax: regexp +^develop-eggs$ +syntax: regexp +^parts$ +syntax: regexp +^bin$ +syntax: regexp +^\.installed\.cfg$ +syntax: regexp +^\.settings$ +syntax: regexp +^build$ +syntax: regexp +^dist$ +syntax: regexp +^\.idea$ +syntax: regexp +.*\.pyc$ diff -r 000000000000 -r 9c21b8e2ba46 .installed.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.installed.cfg Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,78 @@ +[buildout] +installed_develop_eggs = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/develop-eggs/pyams-i18n.egg-link +parts = package i18n pyflakes pyflakesrun test + +[package] +__buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin/pserve + /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin/pcreate + /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin/proutes + /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin/pviews + /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin/prequest + /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin/pdistreport + /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin/pshell + /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin/ptweens +__buildout_signature__ = zc.recipe.egg-2.0.1-py3.4.egg setuptools-12.0.4-py3.4.egg zc.buildout-2.3.1-py3.4.egg +_b = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin +_d = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/develop-eggs +_e = /var/local/env/pyams/eggs +bin-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin +develop-eggs-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/develop-eggs +eggs = pyams_i18n + pyramid + zope.component + zope.interface +eggs-directory = /var/local/env/pyams/eggs +recipe = zc.recipe.egg + +[i18n] +__buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin/pybabel + /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin/pot-create + /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin/polint +__buildout_signature__ = zc.recipe.egg-2.0.1-py3.4.egg setuptools-12.0.4-py3.4.egg zc.buildout-2.3.1-py3.4.egg +_b = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin +_d = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/develop-eggs +_e = /var/local/env/pyams/eggs +bin-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin +develop-eggs-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/develop-eggs +eggs = babel + lingua +eggs-directory = /var/local/env/pyams/eggs +recipe = zc.recipe.egg + +[pyflakes] +__buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin/pyflakes + /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin/pyflakes +__buildout_signature__ = zc.recipe.egg-2.0.1-py3.4.egg setuptools-12.0.4-py3.4.egg zc.buildout-2.3.1-py3.4.egg +_b = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin +_d = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/develop-eggs +_e = /var/local/env/pyams/eggs +bin-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin +develop-eggs-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/develop-eggs +eggs = pyflakes +eggs-directory = /var/local/env/pyams/eggs +entry-points = pyflakes=pyflakes.scripts.pyflakes:main +initialization = if not sys.argv[1:]: sys.argv[1:] = ["src"] +recipe = zc.recipe.egg +scripts = pyflakes + +[pyflakesrun] +__buildout_installed__ = +__buildout_signature__ = collective.recipe.cmd-0.9-py3.4.egg zc.buildout-2.3.1-py3.4.egg setuptools-12.0.4-py3.4.egg +cmds = ./bin/pyflakes +on_install = true +recipe = collective.recipe.cmd + +[test] +__buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/parts/test + /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin/test +__buildout_signature__ = zc.recipe.testrunner-2.0.0-py3.4.egg zc.recipe.egg-2.0.1-py3.4.egg setuptools-12.0.4-py3.4.egg zope.testrunner-4.4.6-py3.4.egg zc.buildout-2.3.1-py3.4.egg zope.interface-4.1.2-py3.4-linux-x86_64.egg zope.exceptions-4.0.7-py3.4.egg six-45a2be65d681713a598787ec39be3290 +_b = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin +_d = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/develop-eggs +_e = /var/local/env/pyams/eggs +bin-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin +develop-eggs-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/develop-eggs +eggs = pyams_i18n [test] +eggs-directory = /var/local/env/pyams/eggs +location = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/parts/test +recipe = zc.recipe.testrunner +script = /home/tflorac/Dropbox/src/PyAMS/pyams_i18n/bin/test diff -r 000000000000 -r 9c21b8e2ba46 LICENSE --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LICENSE Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,42 @@ +Zope Public License (ZPL) Version 2.1 +===================================== + +A copyright notice accompanies this license document that identifies +the copyright holders. + +This license has been certified as open source. It has also been designated +as GPL compatible by the Free Software Foundation (FSF). + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions in source code must retain the accompanying copyright + notice, this list of conditions, and the following disclaimer. + 2. Redistributions in binary form must reproduce the accompanying copyright + notice, this list of conditions, and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Names of the copyright holders must not be used to endorse or promote + products derived from this software without prior written permission + from the copyright holders. + 4. The right to distribute this software or to use it for any purpose does + not give you the right to use Servicemarks (sm) or Trademarks (tm) of the + copyright holders. Use of them is covered by separate agreement with the + copyright holders. + 5. If any files are modified, you must cause the modified files to carry + prominent notices stating that you changed the files and the date of any + change. + + +Disclaimer +========== + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY EXPRESSED +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff -r 000000000000 -r 9c21b8e2ba46 MANIFEST.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MANIFEST.in Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,5 @@ +include *.txt +recursive-include docs * +recursive-include src * +global-exclude *.pyc +global-exclude *.*~ diff -r 000000000000 -r 9c21b8e2ba46 bootstrap.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bootstrap.py Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,178 @@ +############################################################################## +# +# Copyright (c) 2006 Zope Foundation and Contributors. +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# +############################################################################## +"""Bootstrap a buildout-based project + +Simply run this script in a directory containing a buildout.cfg. +The script accepts buildout command-line options, so you can +use the -c option to specify an alternate configuration file. +""" + +import os +import shutil +import sys +import tempfile + +from optparse import OptionParser + +tmpeggs = tempfile.mkdtemp() + +usage = '''\ +[DESIRED PYTHON FOR BUILDOUT] bootstrap.py [options] + +Bootstraps a buildout-based project. + +Simply run this script in a directory containing a buildout.cfg, using the +Python that you want bin/buildout to use. + +Note that by using --find-links to point to local resources, you can keep +this script from going over the network. +''' + +parser = OptionParser(usage=usage) +parser.add_option("-v", "--version", help="use a specific zc.buildout version") + +parser.add_option("-t", "--accept-buildout-test-releases", + dest='accept_buildout_test_releases', + action="store_true", default=False, + help=("Normally, if you do not specify a --version, the " + "bootstrap script and buildout gets the newest " + "*final* versions of zc.buildout and its recipes and " + "extensions for you. If you use this flag, " + "bootstrap and buildout will get the newest releases " + "even if they are alphas or betas.")) +parser.add_option("-c", "--config-file", + help=("Specify the path to the buildout configuration " + "file to be used.")) +parser.add_option("-f", "--find-links", + help=("Specify a URL to search for buildout releases")) +parser.add_option("--allow-site-packages", + action="store_true", default=False, + help=("Let bootstrap.py use existing site packages")) + + +options, args = parser.parse_args() + +###################################################################### +# load/install setuptools + +try: + if options.allow_site_packages: + import setuptools + import pkg_resources + from urllib.request import urlopen +except ImportError: + from urllib2 import urlopen + +ez = {} +exec(urlopen('https://bootstrap.pypa.io/ez_setup.py').read(), ez) + +if not options.allow_site_packages: + # ez_setup imports site, which adds site packages + # this will remove them from the path to ensure that incompatible versions + # of setuptools are not in the path + import site + # inside a virtualenv, there is no 'getsitepackages'. + # We can't remove these reliably + if hasattr(site, 'getsitepackages'): + for sitepackage_path in site.getsitepackages(): + sys.path[:] = [x for x in sys.path if sitepackage_path not in x] + +setup_args = dict(to_dir=tmpeggs, download_delay=0) +ez['use_setuptools'](**setup_args) +import setuptools +import pkg_resources + +# This does not (always?) update the default working set. We will +# do it. +for path in sys.path: + if path not in pkg_resources.working_set.entries: + pkg_resources.working_set.add_entry(path) + +###################################################################### +# Install buildout + +ws = pkg_resources.working_set + +cmd = [sys.executable, '-c', + 'from setuptools.command.easy_install import main; main()', + '-mZqNxd', tmpeggs] + +find_links = os.environ.get( + 'bootstrap-testing-find-links', + options.find_links or + ('http://downloads.buildout.org/' + if options.accept_buildout_test_releases else None) + ) +if find_links: + cmd.extend(['-f', find_links]) + +setuptools_path = ws.find( + pkg_resources.Requirement.parse('setuptools')).location + +requirement = 'zc.buildout' +version = options.version +if version is None and not options.accept_buildout_test_releases: + # Figure out the most recent final version of zc.buildout. + import setuptools.package_index + _final_parts = '*final-', '*final' + + def _final_version(parsed_version): + for part in parsed_version: + if (part[:1] == '*') and (part not in _final_parts): + return False + return True + index = setuptools.package_index.PackageIndex( + search_path=[setuptools_path]) + if find_links: + index.add_find_links((find_links,)) + req = pkg_resources.Requirement.parse(requirement) + if index.obtain(req) is not None: + best = [] + bestv = None + for dist in index[req.project_name]: + distv = dist.parsed_version + if _final_version(distv): + if bestv is None or distv > bestv: + best = [dist] + bestv = distv + elif distv == bestv: + best.append(dist) + if best: + best.sort() + version = best[-1].version +if version: + requirement = '=='.join((requirement, version)) +cmd.append(requirement) + +import subprocess +if subprocess.call(cmd, env=dict(os.environ, PYTHONPATH=setuptools_path)) != 0: + raise Exception( + "Failed to execute command:\n%s" % repr(cmd)[1:-1]) + +###################################################################### +# Import and run buildout + +ws.add_entry(tmpeggs) +ws.require(requirement) +import zc.buildout.buildout + +if not [a for a in args if '=' not in a]: + args.append('bootstrap') + +# if -c was provided, we push it back into args for buildout' main function +if options.config_file is not None: + args[0:0] = ['-c', options.config_file] + +zc.buildout.buildout.main(args) +shutil.rmtree(tmpeggs) diff -r 000000000000 -r 9c21b8e2ba46 buildout.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/buildout.cfg Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,65 @@ +[buildout] +eggs-directory = /var/local/env/pyams/eggs + +socket-timeout = 3 +show-picked-versions = true +newest = false + +allow-hosts = + bitbucket.org + *.python.org + *.sourceforge.net + github.com + +#extends = http://download.ztfy.org/webapp/ztfy.webapp.dev.cfg +versions = versions +newest = false +#allow-picked-versions = false + +src = src +develop = . + +parts = + package + i18n + pyflakes + pyflakesrun + test + +[package] +recipe = zc.recipe.egg +eggs = + pyams_i18n + persistent + pyams_utils + pyramid + zope.component + zope.container + zope.interface + zope.schema + zope.site + +[i18n] +recipe = zc.recipe.egg +eggs = + babel + lingua + +[pyflakes] +recipe = zc.recipe.egg +eggs = pyflakes +scripts = pyflakes +entry-points = pyflakes=pyflakes.scripts.pyflakes:main +initialization = if not sys.argv[1:]: sys.argv[1:] = ["${buildout:src}"] + +[pyflakesrun] +recipe = collective.recipe.cmd +on_install = true +cmds = ${buildout:develop}/bin/${pyflakes:scripts} + +[test] +recipe = zc.recipe.testrunner +eggs = pyams_i18n [test] + +[versions] +pyams_base = 0.1.0 diff -r 000000000000 -r 9c21b8e2ba46 docs/HISTORY.txt diff -r 000000000000 -r 9c21b8e2ba46 docs/README.txt diff -r 000000000000 -r 9c21b8e2ba46 setup.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/setup.py Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,75 @@ +### -*- coding: utf-8 -*- #################################################### +############################################################################## +# +# Copyright (c) 2008-2010 Thierry Florac +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# +############################################################################## + +""" +This module contains pyams_utils package +""" +import os +from setuptools import setup, find_packages + +DOCS = os.path.join(os.path.dirname(__file__), + 'docs') + +README = os.path.join(DOCS, 'README.txt') +HISTORY = os.path.join(DOCS, 'HISTORY.txt') + +version = '0.1.0' +long_description = open(README).read() + '\n\n' + open(HISTORY).read() + +tests_require = [] + +setup(name='pyams_i18n', + version=version, + description="PyAMS internationalization interfaces and classes", + long_description=long_description, + classifiers=[ + "License :: OSI Approved :: Zope Public License", + "Development Status :: 4 - Beta", + "Programming Language :: Python", + "Framework :: Pyramid", + "Topic :: Software Development :: Libraries :: Python Modules", + ], + keywords='Pyramid PyAMS i18n', + author='Thierry Florac', + author_email='tflorac@ulthar.net', + url='http://hg.ztfy.org/pyams/pyams_i18n', + license='ZPL', + packages=find_packages('src'), + package_dir={'': 'src'}, + namespace_packages=[], + include_package_data=True, + package_data={'': ['*.zcml', '*.txt', '*.pt', '*.pot', '*.po', '*.mo', '*.png', '*.gif', '*.jpeg', '*.jpg', '*.css', '*.js']}, + zip_safe=False, + # uncomment this to be able to run tests with setup.py + test_suite="pyams_i18n.tests.test_utilsdocs.test_suite", + tests_require=tests_require, + extras_require=dict(test=tests_require), + install_requires=[ + 'setuptools', + # -*- Extra requirements: -*- + 'persistent', + 'pyams_utils', + 'pyramid', + 'zope.component', + 'zope.container', + 'zope.interface', + 'zope.schema', + 'zope.site', + ], + entry_points={ + 'fanstatic.libraries': [ + 'pyams_i18n = pyams_i18n:library' + ] + }) diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n.egg-info/PKG-INFO --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n.egg-info/PKG-INFO Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,18 @@ +Metadata-Version: 1.1 +Name: pyams-i18n +Version: 0.1.0 +Summary: PyAMS internationalization interfaces and classes +Home-page: http://hg.ztfy.org/pyams/pyams_i18n +Author: Thierry Florac +Author-email: tflorac@ulthar.net +License: ZPL +Description: + + +Keywords: Pyramid PyAMS i18n +Platform: UNKNOWN +Classifier: License :: OSI Approved :: Zope Public License +Classifier: Development Status :: 4 - Beta +Classifier: Programming Language :: Python +Classifier: Framework :: Pyramid +Classifier: Topic :: Software Development :: Libraries :: Python Modules diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n.egg-info/SOURCES.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n.egg-info/SOURCES.txt Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,280 @@ +MANIFEST.in +setup.py +docs/HISTORY.txt +docs/README.txt +src/pyams_i18n/__init__.py +src/pyams_i18n/configure.zcml +src/pyams_i18n/language.py +src/pyams_i18n/negotiator.py +src/pyams_i18n/site.py +src/pyams_i18n.egg-info/PKG-INFO +src/pyams_i18n.egg-info/SOURCES.txt +src/pyams_i18n.egg-info/dependency_links.txt +src/pyams_i18n.egg-info/entry_points.txt +src/pyams_i18n.egg-info/namespace_packages.txt +src/pyams_i18n.egg-info/not-zip-safe +src/pyams_i18n.egg-info/requires.txt +src/pyams_i18n.egg-info/top_level.txt +src/pyams_i18n/interfaces/__init__.py +src/pyams_i18n/locales/pyams_i18n.pot +src/pyams_i18n/locales/fr/LC_MESSAGES/pyams_i18n.mo +src/pyams_i18n/locales/fr/LC_MESSAGES/pyams_i18n.po +src/pyams_i18n/resources/img/flags/aa_ET.png +src/pyams_i18n/resources/img/flags/ab_GE.png +src/pyams_i18n/resources/img/flags/ae_IR.png +src/pyams_i18n/resources/img/flags/af_ZA.png +src/pyams_i18n/resources/img/flags/ak_GH.png +src/pyams_i18n/resources/img/flags/am_ET.png +src/pyams_i18n/resources/img/flags/an_ES.png +src/pyams_i18n/resources/img/flags/ar.png +src/pyams_i18n/resources/img/flags/ar_AE.png +src/pyams_i18n/resources/img/flags/ar_BH.png +src/pyams_i18n/resources/img/flags/ar_DZ.png +src/pyams_i18n/resources/img/flags/ar_EG.png +src/pyams_i18n/resources/img/flags/ar_IQ.png +src/pyams_i18n/resources/img/flags/ar_JO.png +src/pyams_i18n/resources/img/flags/ar_KW.png +src/pyams_i18n/resources/img/flags/ar_LB.png +src/pyams_i18n/resources/img/flags/ar_LY.png +src/pyams_i18n/resources/img/flags/ar_MA.png +src/pyams_i18n/resources/img/flags/ar_OM.png +src/pyams_i18n/resources/img/flags/ar_QA.png +src/pyams_i18n/resources/img/flags/ar_SA.png +src/pyams_i18n/resources/img/flags/ar_SY.png +src/pyams_i18n/resources/img/flags/ar_TN.png +src/pyams_i18n/resources/img/flags/ar_YE.png +src/pyams_i18n/resources/img/flags/arn_CL.png +src/pyams_i18n/resources/img/flags/as_IN.png +src/pyams_i18n/resources/img/flags/ast_ES.png +src/pyams_i18n/resources/img/flags/av_RU.png +src/pyams_i18n/resources/img/flags/ay_BO.png +src/pyams_i18n/resources/img/flags/az_AZ-Cyrl.png +src/pyams_i18n/resources/img/flags/az_AZ-Latn.png +src/pyams_i18n/resources/img/flags/ba_RU.png +src/pyams_i18n/resources/img/flags/be.png +src/pyams_i18n/resources/img/flags/be_BY.png +src/pyams_i18n/resources/img/flags/ber_DZ.png +src/pyams_i18n/resources/img/flags/bg.png +src/pyams_i18n/resources/img/flags/bg_BG.png +src/pyams_i18n/resources/img/flags/bh_IN.png +src/pyams_i18n/resources/img/flags/bi_VU.png +src/pyams_i18n/resources/img/flags/bm_ML.png +src/pyams_i18n/resources/img/flags/bn_IN.png +src/pyams_i18n/resources/img/flags/bo_BT.png +src/pyams_i18n/resources/img/flags/bo_CN.png +src/pyams_i18n/resources/img/flags/br_FR.png +src/pyams_i18n/resources/img/flags/bs_BA-Cyrl.png +src/pyams_i18n/resources/img/flags/bs_BA-Latn.png +src/pyams_i18n/resources/img/flags/ca_AD.png +src/pyams_i18n/resources/img/flags/ca_ES.png +src/pyams_i18n/resources/img/flags/ca_FR.png +src/pyams_i18n/resources/img/flags/ce_RU.png +src/pyams_i18n/resources/img/flags/ch_US.png +src/pyams_i18n/resources/img/flags/co_FR.png +src/pyams_i18n/resources/img/flags/cr_CA.png +src/pyams_i18n/resources/img/flags/cs_CZ.png +src/pyams_i18n/resources/img/flags/cu_BG.png +src/pyams_i18n/resources/img/flags/cv_RU.png +src/pyams_i18n/resources/img/flags/cy_GB.png +src/pyams_i18n/resources/img/flags/da_DK.png +src/pyams_i18n/resources/img/flags/de.png +src/pyams_i18n/resources/img/flags/de_AT.png +src/pyams_i18n/resources/img/flags/de_CH.png +src/pyams_i18n/resources/img/flags/de_DE.png +src/pyams_i18n/resources/img/flags/de_LI.png +src/pyams_i18n/resources/img/flags/de_LU.png +src/pyams_i18n/resources/img/flags/dv_MV.png +src/pyams_i18n/resources/img/flags/dz_BT.png +src/pyams_i18n/resources/img/flags/ee_GH.png +src/pyams_i18n/resources/img/flags/el_GR.png +src/pyams_i18n/resources/img/flags/en.png +src/pyams_i18n/resources/img/flags/en_AU.png +src/pyams_i18n/resources/img/flags/en_BZ.png +src/pyams_i18n/resources/img/flags/en_CA.png +src/pyams_i18n/resources/img/flags/en_GB.png +src/pyams_i18n/resources/img/flags/en_IE.png +src/pyams_i18n/resources/img/flags/en_IN.png +src/pyams_i18n/resources/img/flags/en_JA.png +src/pyams_i18n/resources/img/flags/en_MY.png +src/pyams_i18n/resources/img/flags/en_NZ.png +src/pyams_i18n/resources/img/flags/en_PH.png +src/pyams_i18n/resources/img/flags/en_SG.png +src/pyams_i18n/resources/img/flags/en_TT.png +src/pyams_i18n/resources/img/flags/en_US.png +src/pyams_i18n/resources/img/flags/en_ZA.png +src/pyams_i18n/resources/img/flags/en_ZW.png +src/pyams_i18n/resources/img/flags/es.png +src/pyams_i18n/resources/img/flags/es_AR.png +src/pyams_i18n/resources/img/flags/es_BO.png +src/pyams_i18n/resources/img/flags/es_CL.png +src/pyams_i18n/resources/img/flags/es_CO.png +src/pyams_i18n/resources/img/flags/es_CR.png +src/pyams_i18n/resources/img/flags/es_DO.png +src/pyams_i18n/resources/img/flags/es_EC.png +src/pyams_i18n/resources/img/flags/es_ES-ts.png +src/pyams_i18n/resources/img/flags/es_ES.png +src/pyams_i18n/resources/img/flags/es_GT.png +src/pyams_i18n/resources/img/flags/es_HN.png +src/pyams_i18n/resources/img/flags/es_MX.png +src/pyams_i18n/resources/img/flags/es_NI.png +src/pyams_i18n/resources/img/flags/es_PA.png +src/pyams_i18n/resources/img/flags/es_PE.png +src/pyams_i18n/resources/img/flags/es_PR.png +src/pyams_i18n/resources/img/flags/es_PY.png +src/pyams_i18n/resources/img/flags/es_SV.png +src/pyams_i18n/resources/img/flags/es_UR.png +src/pyams_i18n/resources/img/flags/es_US.png +src/pyams_i18n/resources/img/flags/es_VE.png +src/pyams_i18n/resources/img/flags/et_EE.png +src/pyams_i18n/resources/img/flags/eu_ES.png +src/pyams_i18n/resources/img/flags/fa_IR.png +src/pyams_i18n/resources/img/flags/fi.png +src/pyams_i18n/resources/img/flags/fi_FI.png +src/pyams_i18n/resources/img/flags/fil_PH.png +src/pyams_i18n/resources/img/flags/fj_FJ.png +src/pyams_i18n/resources/img/flags/fo.png +src/pyams_i18n/resources/img/flags/fo_FO.png +src/pyams_i18n/resources/img/flags/fr.png +src/pyams_i18n/resources/img/flags/fr_BE.png +src/pyams_i18n/resources/img/flags/fr_CA.png +src/pyams_i18n/resources/img/flags/fr_CH.png +src/pyams_i18n/resources/img/flags/fr_FR.png +src/pyams_i18n/resources/img/flags/fr_LU.png +src/pyams_i18n/resources/img/flags/fr_MC.png +src/pyams_i18n/resources/img/flags/fy_NL.png +src/pyams_i18n/resources/img/flags/ga_IE.png +src/pyams_i18n/resources/img/flags/gbz_AF.png +src/pyams_i18n/resources/img/flags/gd_GB.png +src/pyams_i18n/resources/img/flags/gl_ES.png +src/pyams_i18n/resources/img/flags/gsw_FR.png +src/pyams_i18n/resources/img/flags/gu_IN.png +src/pyams_i18n/resources/img/flags/ha_NG-Latn.png +src/pyams_i18n/resources/img/flags/he_IL.png +src/pyams_i18n/resources/img/flags/hi_IN.png +src/pyams_i18n/resources/img/flags/hr_BA.png +src/pyams_i18n/resources/img/flags/hr_HR.png +src/pyams_i18n/resources/img/flags/hu.png +src/pyams_i18n/resources/img/flags/hu_HU.png +src/pyams_i18n/resources/img/flags/hy_AM.png +src/pyams_i18n/resources/img/flags/id_ID.png +src/pyams_i18n/resources/img/flags/ii_CN.png +src/pyams_i18n/resources/img/flags/is.png +src/pyams_i18n/resources/img/flags/is_IS.png +src/pyams_i18n/resources/img/flags/it.png +src/pyams_i18n/resources/img/flags/it_CH.png +src/pyams_i18n/resources/img/flags/it_IT.png +src/pyams_i18n/resources/img/flags/iu_CA-Cans.png +src/pyams_i18n/resources/img/flags/iu_CA-Latn.png +src/pyams_i18n/resources/img/flags/ja.png +src/pyams_i18n/resources/img/flags/ja_JP-mac.png +src/pyams_i18n/resources/img/flags/ja_JP.png +src/pyams_i18n/resources/img/flags/ka_GE.png +src/pyams_i18n/resources/img/flags/kh.png +src/pyams_i18n/resources/img/flags/kh_KH.png +src/pyams_i18n/resources/img/flags/kk_KZ.png +src/pyams_i18n/resources/img/flags/kl_GL.png +src/pyams_i18n/resources/img/flags/km_KH.png +src/pyams_i18n/resources/img/flags/kn_IN.png +src/pyams_i18n/resources/img/flags/ko.png +src/pyams_i18n/resources/img/flags/ko_KR.png +src/pyams_i18n/resources/img/flags/kok_IN.png +src/pyams_i18n/resources/img/flags/kw_GB.png +src/pyams_i18n/resources/img/flags/ky_KG.png +src/pyams_i18n/resources/img/flags/lb_LU.png +src/pyams_i18n/resources/img/flags/lo_LA.png +src/pyams_i18n/resources/img/flags/lt.png +src/pyams_i18n/resources/img/flags/lt_LT.png +src/pyams_i18n/resources/img/flags/lv.png +src/pyams_i18n/resources/img/flags/lv_LV.png +src/pyams_i18n/resources/img/flags/mi_NZ.png +src/pyams_i18n/resources/img/flags/mk_MK.png +src/pyams_i18n/resources/img/flags/ml_IN.png +src/pyams_i18n/resources/img/flags/mn_CN.png +src/pyams_i18n/resources/img/flags/mn_MN.png +src/pyams_i18n/resources/img/flags/moh_CA.png +src/pyams_i18n/resources/img/flags/mr_IN.png +src/pyams_i18n/resources/img/flags/ms_BN.png +src/pyams_i18n/resources/img/flags/ms_MY.png +src/pyams_i18n/resources/img/flags/mt.png +src/pyams_i18n/resources/img/flags/mt_MT.png +src/pyams_i18n/resources/img/flags/my_MM.png +src/pyams_i18n/resources/img/flags/nb_NO.png +src/pyams_i18n/resources/img/flags/ne_NP.png +src/pyams_i18n/resources/img/flags/nl_BE.png +src/pyams_i18n/resources/img/flags/nl_NL.png +src/pyams_i18n/resources/img/flags/nn_NO.png +src/pyams_i18n/resources/img/flags/ns_ZA.png +src/pyams_i18n/resources/img/flags/oc_FR.png +src/pyams_i18n/resources/img/flags/or_IN.png +src/pyams_i18n/resources/img/flags/other.png +src/pyams_i18n/resources/img/flags/pa_IN.png +src/pyams_i18n/resources/img/flags/pl.png +src/pyams_i18n/resources/img/flags/pl_PL.png +src/pyams_i18n/resources/img/flags/ps_AF.png +src/pyams_i18n/resources/img/flags/pt.png +src/pyams_i18n/resources/img/flags/pt_BR.png +src/pyams_i18n/resources/img/flags/pt_PT.png +src/pyams_i18n/resources/img/flags/que_BO.png +src/pyams_i18n/resources/img/flags/que_EC.png +src/pyams_i18n/resources/img/flags/que_PE.png +src/pyams_i18n/resources/img/flags/qut_GT.png +src/pyams_i18n/resources/img/flags/rm_CH.png +src/pyams_i18n/resources/img/flags/ro.png +src/pyams_i18n/resources/img/flags/ro_RO.png +src/pyams_i18n/resources/img/flags/ru.png +src/pyams_i18n/resources/img/flags/ru_RU.png +src/pyams_i18n/resources/img/flags/rw_RW.png +src/pyams_i18n/resources/img/flags/sa_IN.png +src/pyams_i18n/resources/img/flags/sah_RU.png +src/pyams_i18n/resources/img/flags/se.png +src/pyams_i18n/resources/img/flags/se_FI.png +src/pyams_i18n/resources/img/flags/se_NO.png +src/pyams_i18n/resources/img/flags/se_SE.png +src/pyams_i18n/resources/img/flags/si_LK.png +src/pyams_i18n/resources/img/flags/sk.png +src/pyams_i18n/resources/img/flags/sk_SK.png +src/pyams_i18n/resources/img/flags/sl_SI.png +src/pyams_i18n/resources/img/flags/sma_NO.png +src/pyams_i18n/resources/img/flags/sma_SE.png +src/pyams_i18n/resources/img/flags/smj_NO.png +src/pyams_i18n/resources/img/flags/smj_SE.png +src/pyams_i18n/resources/img/flags/smn_FI.png +src/pyams_i18n/resources/img/flags/sms_FI.png +src/pyams_i18n/resources/img/flags/sq_AL.png +src/pyams_i18n/resources/img/flags/sr_BA-Cyrl.png +src/pyams_i18n/resources/img/flags/sr_BA-Latn.png +src/pyams_i18n/resources/img/flags/sr_SP-Cyrl.png +src/pyams_i18n/resources/img/flags/sr_SP-Latn.png +src/pyams_i18n/resources/img/flags/sv_FI.png +src/pyams_i18n/resources/img/flags/sv_SE.png +src/pyams_i18n/resources/img/flags/sw_KE.png +src/pyams_i18n/resources/img/flags/syr_SY.png +src/pyams_i18n/resources/img/flags/ta_IN.png +src/pyams_i18n/resources/img/flags/te_IN.png +src/pyams_i18n/resources/img/flags/tg_TJ-Cyrl.png +src/pyams_i18n/resources/img/flags/th_TH.png +src/pyams_i18n/resources/img/flags/tk_TM.png +src/pyams_i18n/resources/img/flags/tn_ZA.png +src/pyams_i18n/resources/img/flags/tr_TR.png +src/pyams_i18n/resources/img/flags/tt_RU.png +src/pyams_i18n/resources/img/flags/ug_CN.png +src/pyams_i18n/resources/img/flags/uk_UA.png +src/pyams_i18n/resources/img/flags/ur_IN.png +src/pyams_i18n/resources/img/flags/ur_PK.png +src/pyams_i18n/resources/img/flags/uz_UZ-Cyrl.png +src/pyams_i18n/resources/img/flags/uz_UZ-Latn.png +src/pyams_i18n/resources/img/flags/vi_VN.png +src/pyams_i18n/resources/img/flags/wee_DE.png +src/pyams_i18n/resources/img/flags/wen_DE.png +src/pyams_i18n/resources/img/flags/wo_SN.png +src/pyams_i18n/resources/img/flags/xh_ZA.png +src/pyams_i18n/resources/img/flags/yo_NG.png +src/pyams_i18n/resources/img/flags/zh_CN.png +src/pyams_i18n/resources/img/flags/zh_HK.png +src/pyams_i18n/resources/img/flags/zh_MO.png +src/pyams_i18n/resources/img/flags/zh_SG.png +src/pyams_i18n/resources/img/flags/zh_TW.png +src/pyams_i18n/resources/img/flags/zu_ZA.png +src/pyams_i18n/zmi/__init__.py +src/pyams_i18n/zmi/configure.zcml +src/pyams_i18n/zmi/negotiator.py \ No newline at end of file diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n.egg-info/dependency_links.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n.egg-info/dependency_links.txt Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,1 @@ + diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n.egg-info/entry_points.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n.egg-info/entry_points.txt Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,3 @@ +[fanstatic.libraries] +pyams_i18n = pyams_i18n:library + diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n.egg-info/namespace_packages.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n.egg-info/namespace_packages.txt Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,1 @@ + diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n.egg-info/not-zip-safe --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n.egg-info/not-zip-safe Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,1 @@ + diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n.egg-info/requires.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n.egg-info/requires.txt Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,11 @@ +setuptools +persistent +pyams_utils +pyramid +zope.component +zope.container +zope.interface +zope.schema +zope.site + +[test] diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n.egg-info/top_level.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n.egg-info/top_level.txt Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,1 @@ +pyams_i18n diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/__init__.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n/__init__.py Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,50 @@ +# +# Copyright (c) 2008-2015 Thierry Florac +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# + +__docformat__ = 'restructuredtext' + +# import standard library +from fanstatic import Library + +# import interfaces + +# import packages + + +from pyramid.i18n import TranslationStringFactory +_ = TranslationStringFactory('pyams_i18n') + + +library = Library('pyams_i18n', 'resources') + + +def includeme(config): + """pyams_i18n include features""" + + # add translations + config.add_translation_dirs('pyams_i18n:locales') + + # add custom locale negotiator + from pyams_i18n.negotiator import locale_negotiator, get_locale + config.set_locale_negotiator(locale_negotiator) + config.add_request_method(get_locale, 'locale', reify=True) + + # load registry components + try: + import pyams_zmi + except ImportError: + config.scan(ignore='pyams_i18n.zmi') + else: + config.scan() + + if hasattr(config, 'load_zcml'): + config.load_zcml('configure.zcml') diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/configure.zcml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n/configure.zcml Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,13 @@ + + + + + + + + + + + diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/interfaces/__init__.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n/interfaces/__init__.py Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,84 @@ +# +# Copyright (c) 2008-2015 Thierry Florac +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# + +__docformat__ = 'restructuredtext' + + +# import standard library + +# import interfaces +from zope.interface import Interface, invariant, Invalid + +# import packages +from zope.schema import Choice, Set, Bool + +from pyams_i18n import _ + + +LANGUAGE_POLICIES = ('server', + 'session', + 'browser', + 'browser --> session --> server', + 'browser --> server', + 'session --> browser --> server', + 'session --> server') + +LANGUAGE_CACHE_KEY = 'pyams_i18n.language.cache' + + +class INegotiator(Interface): + """Local negotiator utility manager interface.""" + + policy = Choice(title=_("Language lookup policy"), + description=_("Defines how the language lookup is working."), + values=LANGUAGE_POLICIES, + default='session --> browser --> server', + required=True) + + server_language = Choice(title=_("Server language"), + description=_("The language used for server policy."), + vocabulary='PyAMS base languages', + default='en', + required=True) + + offered_languages = Set(title=_("Offered languages"), + description=_("A list of offered languages. Can be used to " + "user select languages which are offered in " + "a skin."""), + value_type=Choice(vocabulary='PyAMS base languages'), + default={'en', }, + required=False) + + cache_enabled = Bool(title=_("Language caching enabled"), + description=_("Language caching enabled (per request)"), + default=False) + + @invariant + def check_policy(self): + if self.policy not in LANGUAGE_POLICIES: + raise Invalid(_("Unsupported language policy")) + + def get_language(self, request): + """Return the matching language to use. + + If no match is found, None is returned. + """ + + def clear_cache(self, request): + """Clear cached language value""" + + +class IUserPreferredLanguage(Interface): + """This interface provides language negotiation based on user preferences""" + + def get_language(self): + """Return main user preferred language""" diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/language.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n/language.py Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,473 @@ +# +# Copyright (c) 2008-2015 Thierry Florac +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# + +__docformat__ = 'restructuredtext' + +# import standard library + +# import interfaces +from zope.schema.interfaces import IVocabularyFactory + +# import packages +from pyams_utils.request import check_request +from zope.interface import provider +from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm, getVocabularyRegistry + +from pyams_i18n import _ + + +BASE_LANGUAGES = {'aa': _('Afar'), + 'ab': _('Abkhazian'), + 'ae': _('Avestan'), + 'af': _('Afrikaans'), + 'ak': _('Akan'), + 'am': _('Amharic'), + 'an': _('Aragonese'), + 'ar': _('Arabic'), + 'as': _('Assamese'), + 'av': _('Avaric'), + 'ay': _('Aymara'), + 'az': _('Azerbaijani'), + 'ba': _('Bashkir'), + 'be': _('Belarusian'), + 'bg': _('Bulgarian'), + 'bh': _('Bihari'), + 'bi': _('Bislama'), + 'bm': _('Bambara'), + 'bn': _('Bengali'), + 'bo': _('Tibetan'), + 'br': _('Breton'), + 'bs': _('Bosnian'), + 'ca': _('Catalan'), + 'ce': _('Chechen'), + 'ch': _('Chamorro'), + 'co': _('Corsican'), + 'cr': _('Cree'), + 'cs': _('Czech'), + 'cu': _('Old Church Slavonic'), + 'cv': _('Chuvash'), + 'cy': _('Welsh'), + 'da': _('Danish'), + 'de': _('German'), + 'dv': _('Divehi'), + 'dz': _('Dzongkha'), + 'ee': _('Ewe'), + 'el': _('Greek'), + 'en': _('English'), + 'eo': _('Esperanto'), + 'es': _('Spanish'), + 'et': _('Estonian'), + 'eu': _('Basque'), + 'fa': _('Persian'), + 'ff': _('Fulah'), + 'fi': _('Finnish'), + 'fj': _('Fijian'), + 'fo': _('Faroese'), + 'fr': _('French'), + 'fy': _('Western Frisian'), + 'ga': _('Irish'), + 'gd': _('Scottish Gaelic'), + 'gl': _('Galician'), + 'gn': _('Guarani'), + 'gu': _('Gujarati'), + 'gv': _('Manx'), + 'ha': _('Hausa'), + 'he': _('Hebrew'), + 'hi': _('Hindi'), + 'ho': _('Hiri Motu'), + 'hr': _('Croatian'), + 'ht': _('Haitian'), + 'hu': _('Hungarian'), + 'hy': _('Armenian'), + 'hz': _('Herero'), + 'ia': _('Interlingua'), + 'id': _('Indonesian'), + 'ie': _('Interlingue'), + 'ig': _('Igbo'), + 'ii': _('Sichuan Yi'), + 'ik': _('Inupiaq'), + 'io': _('Ido'), + 'is': _('Icelandic'), + 'it': _('Italian'), + 'iu': _('Inuktitut'), + 'ja': _('Japanese'), + 'jv': _('Javanese'), + 'ka': _('Georgian'), + 'kg': _('Kongo'), + 'ki': _('Kikuyu'), + 'kj': _('Kwanyama'), + 'kk': _('Kazakh'), + 'kl': _('Kalaallisut'), + 'km': _('Khmer'), + 'kn': _('Kannada'), + 'ko': _('Korean'), + 'kr': _('Kanuri'), + 'ks': _('Kashmiri'), + 'ku': _('Kurdish'), + 'kv': _('Komi'), + 'kw': _('Cornish'), + 'ky': _('Kirghiz'), + 'la': _('Latin'), + 'lb': _('Luxembourgish'), + 'lg': _('Ganda'), + 'li': _('Limburgish'), + 'ln': _('Lingala'), + 'lo': _('Lao'), + 'lt': _('Lithuanian'), + 'lu': _('Luba-Katanga'), + 'lv': _('Latvian'), + 'mg': _('Malagasy'), + 'mh': _('Marshallese'), + 'mi': _('Maori'), + 'mk': _('Macedonian'), + 'ml': _('Malayalam'), + 'mn': _('Mongolian'), + 'mo': _('Moldavian'), + 'mr': _('Marathi'), + 'ms': _('Malay'), + 'mt': _('Maltese'), + 'my': _('Burmese'), + 'na': _('Nauru'), + 'nb': _('Norwegian Bokmal'), + 'nd': _('North Ndebele'), + 'ne': _('Nepali'), + 'ng': _('Ndonga'), + 'nl': _('Dutch'), + 'nn': _('Norwegian Nynorsk'), + 'no': _('Norwegian'), + 'nr': _('South Ndebele'), + 'nv': _('Navajo'), + 'ny': _('Chichewa'), + 'oc': _('Occitan'), + 'oj': _('Ojibwa'), + 'om': _('Oromo'), + 'or': _('Oriya'), + 'os': _('Ossetian'), + 'pa': _('Panjabi'), + 'pi': _('Pali'), + 'pl': _('Polish'), + 'ps': _('Pashto'), + 'pt': _('Portuguese'), + 'qu': _('Quechua'), + 'rm': _('Raeto-Romance'), + 'rn': _('Kirundi'), + 'ro': _('Romanian'), + 'ru': _('Russian'), + 'rw': _('Kinyarwanda'), + 'sa': _('Sanskrit'), + 'sc': _('Sardinian'), + 'sd': _('Sindhi'), + 'se': _('Northern Sami'), + 'sg': _('Sango'), + 'si': _('Sinhalese'), + 'sk': _('Slovak'), + 'sl': _('Slovene'), + 'sm': _('Samoan'), + 'sn': _('Shona'), + 'so': _('Somali'), + 'sq': _('Albanian'), + 'sr': _('Serbian'), + 'ss': _('Swati'), + 'st': _('Sotho'), + 'su': _('Sundanese'), + 'sv': _('Swedish'), + 'sw': _('Swahili'), + 'ta': _('Tamil'), + 'te': _('Telugu'), + 'tg': _('Tajik'), + 'th': _('Thai'), + 'ti': _('Tigrinya'), + 'tk': _('Turkmen'), + 'tl': _('Tagalog'), + 'tn': _('Tswana'), + 'to': _('Tonga'), + 'tr': _('Turkish'), + 'ts': _('Tsonga'), + 'tt': _('Tatar'), + 'tw': _('Twi'), + 'ty': _('Tahitian'), + 'ug': _('Uighur'), + 'uk': _('Ukrainian'), + 'ur': _('Urdu'), + 'uz': _('Uzbek'), + 've': _('Venda'), + 'vi': _('Vietnamese'), + 'vo': _('Volapuk'), + 'wa': _('Walloon'), + 'wo': _('Wolof'), + 'xh': _('Xhosa'), + 'yi': _('Yiddish'), + 'yo': _('Yoruba'), + 'za': _('Zhuang'), + 'zh': _('Chinese'), + 'zu': _('Zulu')} + + +@provider(IVocabularyFactory) +class BaseLanguagesVocabulary(SimpleVocabulary): + """Base languages vocabulary, matching ISO 639-1 languages codes""" + + def __init__(self, *args, **kw): + request = check_request() + translate = request.localizer.translate + terms = sorted([SimpleTerm(v, title=translate(t)) for v, t in BASE_LANGUAGES.items()], + key=lambda x: x.title) + super(BaseLanguagesVocabulary, self).__init__(terms) + +getVocabularyRegistry().register('PyAMS base languages', BaseLanguagesVocabulary) + + +ISO_LANGUAGES = {'aa-ET': _("Afar (Ethiopia)"), + 'ab-GE': _("Abkhazian"), + 'ae-IR': _("Avestan (Iran)"), + 'af-ZA': _('Afrikaans'), + 'ak-GH': _("Akan (Ghana)"), + 'am-ET': _('Amharic (Ethiopia)'), + 'an-ES': _("Aragonese (Spain)"), + 'ar-AE': _('Arabic united Arab Emirates)'), + 'ar-BH': _('Arabic (Bahrain)'), + 'ar-DZ': _('Arabic (Algeria)'), + 'ar-EG': _('Arabic (Egypt)'), + 'ar-IQ': _('Arabic (Iraq)'), + 'ar-JO': _('Arabic (Jordan)'), + 'ar-KW': _('Arabic (Kuwait)'), + 'ar-LB': _('Arabic (Lebanon)'), + 'ar-LY': _('Arabic (Libyan Arab Jamahiriya)'), + 'ar-MA': _('Arabic (Morocco)'), + 'ar-OM': _('Arabic (Oman)'), + 'ar-QA': _('Arabic (Qatar)'), + 'ar-SA': _('Arabic (Saudi Arabia)'), + 'ar-SY': _('Arabic (Syrian Arab Republic)'), + 'ar-TN': _('Arabic (Tunisia)'), + 'ar-YE': _('Arabic (Yemen)'), + 'arn-CL': _('Mapudungun (Chile)'), + 'as-IN': _('Assamese (India)'), + 'ast-ES': _('Asturien'), + 'av-RU': _("Avaric (Russia)"), + 'ay-BO': _("Aymara (Bolivia)"), + 'az-AZ-Cyrl': _('Azerbaijani (Cyrillic)'), + 'az-AZ-Latn': _('Azerbaijani (Latin)'), + 'ba-RU': _('Bashkir (Russia)'), + 'be-BY': _('Belarusian (Belarus)'), + 'ber-DZ': _('Berber (Algeria, Latin)'), + 'bg-BG': _('Bulgarian'), + 'bh-IN': _("Bihari (India)"), + 'bi-VU': _("Bislama (Vanuatu)"), + 'bm-ML': _("Bambara (Mali)"), + 'bn-IN': _('Bengali (India)'), + 'bo-BT': _('Tibetan (Bhutan)'), + 'bo-CN': _('Tibetan (China)'), + 'br-FR': _('Breton'), + 'bs-BA-Cyrl': _('Bosnian (Bosnia Herzegovina, Cyrillic)'), + 'bs-BA-Latn': _('Bosnian (Bosnie Herzegovina, Latin)'), + 'ca-AD': _('Catalan (Andorra)'), + 'ca-ES': _('Catalan (Spain)'), + 'ca-FR': _('Catalan (France)'), + 'ce-RU': _('Chechen'), + 'ch-US': _('Chamorro'), + 'co-FR': _('Corsican (France)'), + 'cr-CA': _('Cree (Canada)'), + 'cs-CZ': _('Czech'), + 'cu-BG': _('Old Slavonic'), + 'cv-RU': _('Chuvash (Russia)'), + 'cy-GB': _('Welsh'), + 'da-DK': _('Danish'), + 'de-AT': _('German (Austria)'), + 'de-CH': _('German (Swotzerland)'), + 'de-DE': _('German (Germany)'), + 'de-LI': _('German (Liechtenstein)'), + 'de-LU': _('German (Luxembourg)'), + 'dv-MV': _('Divehi (Maldives)'), + 'dz-BT': _('Dzongkha (Bhutan)'), + 'ee-GH': _('Ewe (Ghana)'), + 'el-GR': _('Greek'), + 'en-AU': _('English (Australia)'), + 'en-BZ': _('English (Belize)'), + 'en-CA': _('English (Canada)'), + 'en-CB': _('English (Caraibes)'), + 'en-GB': _('English (United Kingdom)'), + 'en-IE': _('English (Ireland)'), + 'en-IN': _('English (India)'), + 'en-JA': _('English (Jamaica)'), + 'en-MY': _('English (Malaysia)'), + 'en-NZ': _('English (New Zealand)'), + 'en-PH': _('English (Philippines)'), + 'en-SG': _('English (Singapore)'), + 'en-TT': _('English (Trinidad)'), + 'en-US': _('English (United States)'), + 'en-ZA': _('English (South Africa)'), + 'en-ZW': _('English (Zimbabwe)'), + 'eo': _('Esperanto'), + 'es-AR': _('Spanish (Argentina)'), + 'es-BO': _('Spanish (Bolivia)'), + 'es-CL': _('Spanish (Chile)'), + 'es-CO': _('Spanish (Colombia)'), + 'es-CR': _('Spanish (Costa Rica)'), + 'es-DO': _('Spanish (Dominican Republic)'), + 'es-EC': _('Spanish (Ecuador)'), + 'es-ES': _('Spanish (Spain)'), + 'es-ES-ts': _('Spanish (Spain, Traditional)'), + 'es-GT': _('Spanish (Guatemala)'), + 'es-HN': _('Spanish (Honduras)'), + 'es-MX': _('Spanish (Mexico)'), + 'es-NI': _('Spanish (Nicaragua)'), + 'es-PA': _('Spanish (Panama)'), + 'es-PE': _('Spanish (Peru)'), + 'es-PR': _('Spanish (Puerto Rico)'), + 'es-PY': _('Spanish (Paraguay)'), + 'es-SV': _('Spanish (El Salvador)'), + 'es-UR': _('Spanish (Uruguay)'), + 'es-US': _('Spanish (United States)'), + 'es-VE': _('Spanish (Venezuela)'), + 'et-EE': _('Estonian (Estonia)'), + 'eu-ES': _('Basque'), + 'fa-IR': _('Persian (Iran)'), + 'fi-FI': _('Finish'), + 'fil-PH': _('Philippine'), + 'fj-FJ': _('Fijian'), + 'fo-FO': _('Faroese (Faroe Islands)'), + 'fr-FR': _('French (France)'), + 'fr-BE': _('French (Belgium)'), + 'fr-CA': _('French (Canada)'), + 'fr-CH': _('French (Switzerland)'), + 'fr-LU': _('French (Luxembourg)'), + 'fr-MC': _('French (Monaco)'), + 'fur-IT': _('Frioulan (Italia)'), + 'fy-NL': _('Frisian (Netherlands)'), + 'ga-IE': _('Irish'), + 'gbz-AF': _('Dari (Afghanistan)'), + 'gd-GB': _('Gaelic (Scotland)'), + 'gl-ES': _('Galician'), + 'gsw-FR': _('Alsatian (France)'), + 'gu-IN': _('Gujarati (India)'), + 'ha-NG-Latn': _('Hausa (Nigeria)'), + 'he-IL': _('Hebrew (Israel)'), + 'hi-IN': _('Hindi (Inde)'), + 'hr-BA': _('Croatian (Bosnia Herzegovina, Latin)'), + 'hr-HR': _('Croatian (Croatia)'), + 'hu-HU': _('Hungarian'), + 'hy-AM': _('Armenian (Armenia)'), + 'id-ID': _('Indonesian'), + 'ii-CN': _('Yi (China)'), + 'iu-CA-Cans': _('Inuktitut (Canada, Syllabic)'), + 'iu-CA-Latn': _('Inuktitut (Canada, Latin)'), + 'is-IS': _('Icelandic'), + 'it-CH': _('Italian (Switzerland)'), + 'it-IT': _('Italian (Italia)'), + 'ja-JP': _('Japanese'), + 'ja-JP-mac': _('Japanese (Japan, Mac)'), + 'ka-GE': _('Georgian'), + 'kk-KZ': _('Kazakh (Kazakhstan)'), + 'kl-GL': _('Greenlandic'), + 'km-KH': _('Khmer (Cambodia)'), + 'kn-IN': _('Kannada (India)'), + 'ko-KR': _('Korean (Korea)'), + 'kok-IN': _('Konkani (India)'), + 'kw-GB': _('Cornish'), + 'ky-KG': _('Kirghiz (Kyrgizstan)'), + 'lb-LU': _('Luxembourgish'), + 'lo-LA': _('Lao'), + 'lt-LT': _('Lituanian'), + 'lv-LV': _('Latvian'), + 'mi-NZ': _('Maori (New Zealand)'), + 'mk-MK': _('Macedonian'), + 'ml-IN': _('Malayalam (Inde)'), + 'mn-CN': _('Mongolian (China)'), + 'mn-MN': _('Mongolian (Mongolia)'), + 'moh-CA': _('Mohawk (Canada)'), + 'mr-IN': _('Marathi (Inde)'), + 'ms-BN': _('Malay (Brunei)'), + 'ms-MY': _('Malay'), + 'mt-MT': _('Maltese'), + 'my-MM': _('Burmese (Myanmar)'), + 'nb-NO': _('Norwegian (Bokmal)'), + 'nn-NO': _('Norwegian (Nynorsk)'), + 'ne-NP': _('Nepali'), + 'nl-BE': _('Dutch (Belgium)'), + 'nl-NL': _('Dutch (Netherlands)'), + 'oc-FR': _('Occitan (France)'), + 'or-IN': _('Oriya (India)'), + 'pa-IN': _('Punjabi (India)'), + 'pl-PL': _('Polish'), + 'ps-AF': _('Pachto (Afghanistan)'), + 'pt-BR': _('Portuguese (Brazil)'), + 'pt-PT': _('Portuguese (Portugal)'), + 'que-BO': _('Quechua (Bolivia)'), + 'que-EC': _('Quechua (Ecuador)'), + 'que-PE': _('Quechua (Peru)'), + 'rm-CH': _('Romansh'), + 'ro-RO': _('Romanian'), + 'ru-RU': _('Russian'), + 'rw-RW': _('Kinyarwanda (Rwanda)'), + 'sa-IN': _('Sanskrit (Inde)'), + 'sah-RU': _('Yakut (Russia)'), + 'se-FI': _('Sami (Northern, Finland)'), + 'se-NO': _('Sami (Northern, Norway)'), + 'se-SE': _('Sami (Northern, Sweden)'), + 'si-LK': _('Sinhala (Sri Lanka)'), + 'sk-SK': _('Slovak'), + 'sl-SI': _('Slovenian'), + 'sr-BA-Cyrl': _('Serbian (Bosnia Herzegovina, Cyrillic)'), + 'sr-BA-Latn': _('Serbian (Bosnia Herzegovina, Latin)'), + 'sr-SP-Cyrl': _('Serbian (Serbia and Montenegro, Cyrillic)'), + 'sr-SP-Latn': _('Serbian (Serbia and Montenegro, Latin)'), + 'sma-NO': _('Sami (Southern, Norway)'), + 'sma-SE': _('Sami (Southern, Sweden)'), + 'smj-NO': _('Sami (Lule, Norway)'), + 'smj-SE': _('Sami (Lule, Sweden)'), + 'smn-FI': _('Sami (Inari, Finland)'), + 'sms-FI': _('Sami (Skolt, Finland)'), + 'sq-AL': _('Albanian'), + 'sv-FI': _('Swedish (Finland)'), + 'sv-SE': _('Swedish (Sweden)'), + 'sw-KE': _('Swahili (Kenya)'), + 'syr-SY': _('Syriac'), + 'ta-IN': _('Tamil (India)'), + 'te-IN': _('Telugu (India)'), + 'tg-TJ-Cyrl': _('Tajik (Tajikistan)'), + 'th-TH': _('Thai (Thailand)'), + 'tk-TM': _('Turkmen (Turkmenistan)'), + 'tn-ZA': _('Tswana (South Africa)'), + 'tr-TR': _('Turkish'), + 'tt-RU': _('Tatar (Russia)'), + 'ug-CN': _('Uighur (China)'), + 'uk-UA': _('Ukrainian'), + 'ur-IN': _('Urdu (Inde)'), + 'ur-PK': _('Urdu (Pakistan)'), + 'uz-UZ-Cyrl': _('Uzbek uzbekistan, Cyrillic)'), + 'uz-UZ-Latn': _('Uzbek uzbekistan, Latin)'), + 'vi-VN': _('Vietnamese'), + 'wen-DE': _('Sorbian (Germany)'), + 'wo-SN': _('Wolof (Senegal)'), + 'xh-ZA': _('Xhosa (South Africa)'), + 'yo-NG': _('Yoruba (Nigeria)'), + 'zh-CHS': _('Chinese (Simplified)'), + 'zh-CHT': _('Chinese (Traditional)'), + 'zh-CN': _('Chinese (China)'), + 'zh-HK': _('Chinese (Hong Kong, China)'), + 'zh-MO': _('Chinese (Macao)'), + 'zh-SG': _('Chinese (Singapore)'), + 'zh-TW': _('Chinese (Taiwan)'), + 'zu-ZA': _('Zulu (South Africa)')} + + +@provider(IVocabularyFactory) +class ISOLanguagesVocabulary(SimpleVocabulary): + + def __init__(self, *args, **kw): + request = check_request() + translate = request.localizer.translate + terms = sorted([SimpleTerm(v, title=translate(t)) for v, t in ISO_LANGUAGES.items()]) + terms.sort(key=lambda x: x.title) + super(ISOLanguagesVocabulary, self).__init__(terms) + +getVocabularyRegistry().register('PyAMS ISO languages', BaseLanguagesVocabulary) diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/locales/fr/LC_MESSAGES/pyams_i18n.mo Binary file src/pyams_i18n/locales/fr/LC_MESSAGES/pyams_i18n.mo has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/locales/fr/LC_MESSAGES/pyams_i18n.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n/locales/fr/LC_MESSAGES/pyams_i18n.po Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,1585 @@ +# +# French translations for PACKAGE package +# This file is distributed under the same license as the PACKAGE package. +# Thierry Florac , 2015. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE 1.0\n" +"POT-Creation-Date: 2015-02-03 21:41+0100\n" +"PO-Revision-Date: 2015-02-03 21:43+0100\n" +"Last-Translator: Thierry Florac \n" +"Language-Team: French\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Lingua 3.8\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: src/pyams_i18n/language.py:28 +msgid "Afar" +msgstr "Afar (Éthiopie)" + +#: src/pyams_i18n/language.py:29 src/pyams_i18n/language.py:230 +msgid "Abkhazian" +msgstr "Abkhaze" + +#: src/pyams_i18n/language.py:30 +msgid "Avestan" +msgstr "Avestique (Iran)" + +#: src/pyams_i18n/language.py:31 src/pyams_i18n/language.py:232 +msgid "Afrikaans" +msgstr "Afrikaans" + +#: src/pyams_i18n/language.py:32 +msgid "Akan" +msgstr "Akan (Ghana)" + +#: src/pyams_i18n/language.py:33 +msgid "Amharic" +msgstr "Amharique (Éthiopie)" + +#: src/pyams_i18n/language.py:34 +msgid "Aragonese" +msgstr "Aragonais" + +#: src/pyams_i18n/language.py:35 +msgid "Arabic" +msgstr "Arabe" + +#: src/pyams_i18n/language.py:36 +msgid "Assamese" +msgstr "Assamais (Inde)" + +#: src/pyams_i18n/language.py:37 +msgid "Avaric" +msgstr "Avar (Russie)" + +#: src/pyams_i18n/language.py:38 +msgid "Aymara" +msgstr "Aymara (Pérou, Bolivie)" + +#: src/pyams_i18n/language.py:39 +msgid "Azerbaijani" +msgstr "Azéri" + +#: src/pyams_i18n/language.py:40 +msgid "Bashkir" +msgstr "Bashkir (Russie)" + +#: src/pyams_i18n/language.py:41 +msgid "Belarusian" +msgstr "Biélorusse" + +#: src/pyams_i18n/language.py:42 src/pyams_i18n/language.py:262 +msgid "Bulgarian" +msgstr "Bulgare" + +#: src/pyams_i18n/language.py:43 +msgid "Bihari" +msgstr "Bihari (Inde)" + +#: src/pyams_i18n/language.py:44 +msgid "Bislama" +msgstr "Bichelamar (Vanuatu)" + +#: src/pyams_i18n/language.py:45 +msgid "Bambara" +msgstr "Bambara (Mali)" + +#: src/pyams_i18n/language.py:46 +msgid "Bengali" +msgstr "Bengali (Inde)" + +#: src/pyams_i18n/language.py:47 +msgid "Tibetan" +msgstr "Tibétain (Chine)" + +#: src/pyams_i18n/language.py:48 src/pyams_i18n/language.py:269 +msgid "Breton" +msgstr "Breton" + +#: src/pyams_i18n/language.py:49 +msgid "Bosnian" +msgstr "Bosnien" + +#: src/pyams_i18n/language.py:50 +msgid "Catalan" +msgstr "Catalan" + +#: src/pyams_i18n/language.py:51 src/pyams_i18n/language.py:275 +msgid "Chechen" +msgstr "Tchétchène" + +#: src/pyams_i18n/language.py:52 src/pyams_i18n/language.py:276 +msgid "Chamorro" +msgstr "Chamorro" + +#: src/pyams_i18n/language.py:53 +msgid "Corsican" +msgstr "Corse (France)" + +#: src/pyams_i18n/language.py:54 +msgid "Cree" +msgstr "Cree (Amérique du Nord)" + +#: src/pyams_i18n/language.py:55 src/pyams_i18n/language.py:279 +msgid "Czech" +msgstr "Tchèque" + +#: src/pyams_i18n/language.py:56 +msgid "Old Church Slavonic" +msgstr "Vieux slave" + +#: src/pyams_i18n/language.py:57 +msgid "Chuvash" +msgstr "Tchouvache (Russie)" + +#: src/pyams_i18n/language.py:58 src/pyams_i18n/language.py:282 +msgid "Welsh" +msgstr "Gallois" + +#: src/pyams_i18n/language.py:59 src/pyams_i18n/language.py:283 +msgid "Danish" +msgstr "Danois" + +#: src/pyams_i18n/language.py:60 +msgid "German" +msgstr "Allemand" + +#: src/pyams_i18n/language.py:61 +msgid "Divehi" +msgstr "Divehi (Maldives)" + +#: src/pyams_i18n/language.py:62 +msgid "Dzongkha" +msgstr "Dzongkha (Bhoutan)" + +#: src/pyams_i18n/language.py:63 +msgid "Ewe" +msgstr "Ewe (Niger, Congo)" + +#: src/pyams_i18n/language.py:64 src/pyams_i18n/language.py:292 +msgid "Greek" +msgstr "Grec" + +#: src/pyams_i18n/language.py:65 +msgid "English" +msgstr "Anglais" + +#: src/pyams_i18n/language.py:66 src/pyams_i18n/language.py:309 +msgid "Esperanto" +msgstr "Espéranto" + +#: src/pyams_i18n/language.py:67 +msgid "Spanish" +msgstr "Espagnol" + +#: src/pyams_i18n/language.py:68 +msgid "Estonian" +msgstr "Estonien" + +#: src/pyams_i18n/language.py:69 src/pyams_i18n/language.py:332 +msgid "Basque" +msgstr "Basque (France, Espagne)" + +#: src/pyams_i18n/language.py:70 +msgid "Persian" +msgstr "Perse (Iran)" + +#: src/pyams_i18n/language.py:71 +msgid "Fulah" +msgstr "Peul (Afrique de l'Ouest)" + +#: src/pyams_i18n/language.py:72 +msgid "Finnish" +msgstr "Finnois" + +#: src/pyams_i18n/language.py:73 src/pyams_i18n/language.py:336 +msgid "Fijian" +msgstr "Fidjien" + +#: src/pyams_i18n/language.py:74 +msgid "Faroese" +msgstr "Féroïen" + +#: src/pyams_i18n/language.py:75 +msgid "French" +msgstr "Français" + +#: src/pyams_i18n/language.py:76 +msgid "Western Frisian" +msgstr "Frison (Pays-Bas)" + +#: src/pyams_i18n/language.py:77 src/pyams_i18n/language.py:346 +msgid "Irish" +msgstr "Irlandais" + +#: src/pyams_i18n/language.py:78 +msgid "Scottish Gaelic" +msgstr "Gaélique (Écosse)" + +#: src/pyams_i18n/language.py:79 src/pyams_i18n/language.py:349 +msgid "Galician" +msgstr "Galicien" + +#: src/pyams_i18n/language.py:80 +msgid "Guarani" +msgstr "Guarani (Paraguay)" + +#: src/pyams_i18n/language.py:81 +msgid "Gujarati" +msgstr "Goudjrati (Inde)" + +#: src/pyams_i18n/language.py:82 +msgid "Manx" +msgstr "Manxois (Île de Man)" + +#: src/pyams_i18n/language.py:83 +msgid "Hausa" +msgstr "Haoussa (Nigéria)" + +#: src/pyams_i18n/language.py:84 +msgid "Hebrew" +msgstr "Hébreu" + +#: src/pyams_i18n/language.py:85 +msgid "Hindi" +msgstr "Hindi" + +#: src/pyams_i18n/language.py:86 +msgid "Hiri Motu" +msgstr "Hiri Motou (Papouasie)" + +#: src/pyams_i18n/language.py:87 +msgid "Croatian" +msgstr "Croate" + +#: src/pyams_i18n/language.py:88 +msgid "Haitian" +msgstr "Haïtien" + +#: src/pyams_i18n/language.py:89 src/pyams_i18n/language.py:357 +msgid "Hungarian" +msgstr "Hongrois" + +#: src/pyams_i18n/language.py:90 +msgid "Armenian" +msgstr "Arménien" + +#: src/pyams_i18n/language.py:91 +msgid "Herero" +msgstr "Héréro (Namibie)" + +#: src/pyams_i18n/language.py:92 +msgid "Interlingua" +msgstr "Interlingua" + +#: src/pyams_i18n/language.py:93 src/pyams_i18n/language.py:359 +msgid "Indonesian" +msgstr "Indonésien" + +#: src/pyams_i18n/language.py:94 +msgid "Interlingue" +msgstr "Interlingue" + +#: src/pyams_i18n/language.py:95 +msgid "Igbo" +msgstr "Igbo (Nigéria)" + +#: src/pyams_i18n/language.py:96 +msgid "Sichuan Yi" +msgstr "Yi (Sichuan)" + +#: src/pyams_i18n/language.py:97 +msgid "Inupiaq" +msgstr "Inupiak (Inuit)" + +#: src/pyams_i18n/language.py:98 +msgid "Ido" +msgstr "Ido" + +#: src/pyams_i18n/language.py:99 src/pyams_i18n/language.py:363 +msgid "Icelandic" +msgstr "Islandais" + +#: src/pyams_i18n/language.py:100 +msgid "Italian" +msgstr "Italien" + +#: src/pyams_i18n/language.py:101 +msgid "Inuktitut" +msgstr "Inuktitut (Inuit)" + +#: src/pyams_i18n/language.py:102 src/pyams_i18n/language.py:366 +msgid "Japanese" +msgstr "Japonais" + +#: src/pyams_i18n/language.py:103 +msgid "Javanese" +msgstr "Javanais" + +#: src/pyams_i18n/language.py:104 src/pyams_i18n/language.py:368 +msgid "Georgian" +msgstr "Géorgien" + +#: src/pyams_i18n/language.py:105 +msgid "Kongo" +msgstr "Kongo" + +#: src/pyams_i18n/language.py:106 +msgid "Kikuyu" +msgstr "Kikuyu (Kenya)" + +#: src/pyams_i18n/language.py:107 +msgid "Kwanyama" +msgstr "Kuanyama (Angola, Namibie)" + +#: src/pyams_i18n/language.py:108 +msgid "Kazakh" +msgstr "Kazakh" + +#: src/pyams_i18n/language.py:109 +msgid "Kalaallisut" +msgstr "Groënlandais" + +#: src/pyams_i18n/language.py:110 +msgid "Khmer" +msgstr "Khmer" + +#: src/pyams_i18n/language.py:111 +msgid "Kannada" +msgstr "Kannada (Inde)" + +#: src/pyams_i18n/language.py:112 +msgid "Korean" +msgstr "Coréen" + +#: src/pyams_i18n/language.py:113 +msgid "Kanuri" +msgstr "Kanuri (Tchad)" + +#: src/pyams_i18n/language.py:114 +msgid "Kashmiri" +msgstr "Cachemiri (Inde)" + +#: src/pyams_i18n/language.py:115 +msgid "Kurdish" +msgstr "Kurde" + +#: src/pyams_i18n/language.py:116 +msgid "Komi" +msgstr "Komi" + +#: src/pyams_i18n/language.py:117 src/pyams_i18n/language.py:375 +msgid "Cornish" +msgstr "Cornique (Royaume-Uni)" + +#: src/pyams_i18n/language.py:118 +msgid "Kirghiz" +msgstr "Kirghize" + +#: src/pyams_i18n/language.py:119 +msgid "Latin" +msgstr "Latin" + +#: src/pyams_i18n/language.py:120 src/pyams_i18n/language.py:377 +msgid "Luxembourgish" +msgstr "Luxembourgeois" + +#: src/pyams_i18n/language.py:121 +msgid "Ganda" +msgstr "Ganda (Congo)" + +#: src/pyams_i18n/language.py:122 +msgid "Limburgish" +msgstr "Limbourgeois" + +#: src/pyams_i18n/language.py:123 +msgid "Lingala" +msgstr "Lingala (Congo)" + +#: src/pyams_i18n/language.py:124 src/pyams_i18n/language.py:378 +msgid "Lao" +msgstr "Lao" + +#: src/pyams_i18n/language.py:125 +msgid "Lithuanian" +msgstr "Lituanien" + +#: src/pyams_i18n/language.py:126 +msgid "Luba-Katanga" +msgstr "Luba-Katanga (Congo)" + +#: src/pyams_i18n/language.py:127 src/pyams_i18n/language.py:380 +msgid "Latvian" +msgstr "Letton" + +#: src/pyams_i18n/language.py:128 +msgid "Malagasy" +msgstr "Malgache" + +#: src/pyams_i18n/language.py:129 +msgid "Marshallese" +msgstr "Marshallais (Micronésie)" + +#: src/pyams_i18n/language.py:130 +msgid "Maori" +msgstr "Maori" + +#: src/pyams_i18n/language.py:131 src/pyams_i18n/language.py:382 +msgid "Macedonian" +msgstr "Macédonien" + +#: src/pyams_i18n/language.py:132 +msgid "Malayalam" +msgstr "Malayalam (Inde)" + +#: src/pyams_i18n/language.py:133 +msgid "Mongolian" +msgstr "Mongol" + +#: src/pyams_i18n/language.py:134 +msgid "Moldavian" +msgstr "Moldave" + +#: src/pyams_i18n/language.py:135 +msgid "Marathi" +msgstr "Marathi (Inde)" + +#: src/pyams_i18n/language.py:136 src/pyams_i18n/language.py:389 +msgid "Malay" +msgstr "Malais" + +#: src/pyams_i18n/language.py:137 src/pyams_i18n/language.py:390 +msgid "Maltese" +msgstr "Maltais" + +#: src/pyams_i18n/language.py:138 +msgid "Burmese" +msgstr "Birman" + +#: src/pyams_i18n/language.py:139 +msgid "Nauru" +msgstr "Nauruan (Micronésie)" + +#: src/pyams_i18n/language.py:140 +msgid "Norwegian Bokmal" +msgstr "Norvégien (Bokmål)" + +#: src/pyams_i18n/language.py:141 +msgid "North Ndebele" +msgstr "Ndebele (Nord Afrique du Sud)" + +#: src/pyams_i18n/language.py:142 src/pyams_i18n/language.py:394 +msgid "Nepali" +msgstr "Népalais" + +#: src/pyams_i18n/language.py:143 +msgid "Ndonga" +msgstr "Ndonga (Namibie)" + +#: src/pyams_i18n/language.py:144 +msgid "Dutch" +msgstr "Hollandais" + +#: src/pyams_i18n/language.py:145 +msgid "Norwegian Nynorsk" +msgstr "Norvégien (Nynorsk)" + +#: src/pyams_i18n/language.py:146 +msgid "Norwegian" +msgstr "Norvégien" + +#: src/pyams_i18n/language.py:147 +msgid "South Ndebele" +msgstr "Ndebele (Afrique du Sud)" + +#: src/pyams_i18n/language.py:148 +msgid "Navajo" +msgstr "Navajo (Amérique du Nord)" + +#: src/pyams_i18n/language.py:149 +msgid "Chichewa" +msgstr "Chichewa (Malawi)" + +#: src/pyams_i18n/language.py:150 +msgid "Occitan" +msgstr "Occitan" + +#: src/pyams_i18n/language.py:151 +msgid "Ojibwa" +msgstr "Ojibwé (Amérique du Nord)" + +#: src/pyams_i18n/language.py:152 +msgid "Oromo" +msgstr "Oromo (Éthiopie)" + +#: src/pyams_i18n/language.py:153 +msgid "Oriya" +msgstr "Oriya (Inde)" + +#: src/pyams_i18n/language.py:154 +msgid "Ossetian" +msgstr "Ossète (Ossétie)" + +#: src/pyams_i18n/language.py:155 +msgid "Panjabi" +msgstr "Panjabi (Inde, Pakistan)" + +#: src/pyams_i18n/language.py:156 +msgid "Pali" +msgstr "Pali (Inde)" + +#: src/pyams_i18n/language.py:157 src/pyams_i18n/language.py:400 +msgid "Polish" +msgstr "Polonais" + +#: src/pyams_i18n/language.py:158 +msgid "Pashto" +msgstr "Pashto (Afghanistan)" + +#: src/pyams_i18n/language.py:159 +msgid "Portuguese" +msgstr "Portugais" + +#: src/pyams_i18n/language.py:160 +msgid "Quechua" +msgstr "Quechua (Pérou)" + +#: src/pyams_i18n/language.py:161 +msgid "Raeto-Romance" +msgstr "Rhaeto-Romande (Suisse)" + +#: src/pyams_i18n/language.py:162 +msgid "Kirundi" +msgstr "Kirundi (Tanzanie, Congo)" + +#: src/pyams_i18n/language.py:163 src/pyams_i18n/language.py:408 +msgid "Romanian" +msgstr "Roumain" + +#: src/pyams_i18n/language.py:164 src/pyams_i18n/language.py:409 +msgid "Russian" +msgstr "Russe" + +#: src/pyams_i18n/language.py:165 +msgid "Kinyarwanda" +msgstr "Kinyarwanda (Rwanda)" + +#: src/pyams_i18n/language.py:166 +msgid "Sanskrit" +msgstr "Sanskrit (Inde)" + +#: src/pyams_i18n/language.py:167 +msgid "Sardinian" +msgstr "Sarde" + +#: src/pyams_i18n/language.py:168 +msgid "Sindhi" +msgstr "Sindhî (Pakistan)" + +#: src/pyams_i18n/language.py:169 +msgid "Northern Sami" +msgstr "Same (Laponie)" + +#: src/pyams_i18n/language.py:170 +msgid "Sango" +msgstr "Sango (Afrique Centrale)" + +#: src/pyams_i18n/language.py:171 +msgid "Sinhalese" +msgstr "Cingalais (Sri Lanka)" + +#: src/pyams_i18n/language.py:172 src/pyams_i18n/language.py:417 +msgid "Slovak" +msgstr "Slovaque" + +#: src/pyams_i18n/language.py:173 +msgid "Slovene" +msgstr "Slovène" + +#: src/pyams_i18n/language.py:174 +msgid "Samoan" +msgstr "Samoan" + +#: src/pyams_i18n/language.py:175 +msgid "Shona" +msgstr "Shona (Zimbabwe)" + +#: src/pyams_i18n/language.py:176 +msgid "Somali" +msgstr "Somali" + +#: src/pyams_i18n/language.py:177 src/pyams_i18n/language.py:429 +msgid "Albanian" +msgstr "Albanais" + +#: src/pyams_i18n/language.py:178 +msgid "Serbian" +msgstr "Serbe" + +#: src/pyams_i18n/language.py:179 +msgid "Swati" +msgstr "Swati (Swaziland)" + +#: src/pyams_i18n/language.py:180 +msgid "Sotho" +msgstr "Basotho (Lesotho)" + +#: src/pyams_i18n/language.py:181 +msgid "Sundanese" +msgstr "Soudanais" + +#: src/pyams_i18n/language.py:182 +msgid "Swedish" +msgstr "Suédois" + +#: src/pyams_i18n/language.py:183 +msgid "Swahili" +msgstr "Swahili (Kenya)" + +#: src/pyams_i18n/language.py:184 +msgid "Tamil" +msgstr "Tamoul (Inde)" + +#: src/pyams_i18n/language.py:185 +msgid "Telugu" +msgstr "Telugu (Inde)" + +#: src/pyams_i18n/language.py:186 +msgid "Tajik" +msgstr "Tadjik" + +#: src/pyams_i18n/language.py:187 +msgid "Thai" +msgstr "Thaï" + +#: src/pyams_i18n/language.py:188 +msgid "Tigrinya" +msgstr "Tigrigna (Éthiopie)" + +#: src/pyams_i18n/language.py:189 +msgid "Turkmen" +msgstr "Turkmène" + +#: src/pyams_i18n/language.py:190 +msgid "Tagalog" +msgstr "Tagalog (Philippines)" + +#: src/pyams_i18n/language.py:191 +msgid "Tswana" +msgstr "Tswana (Botswana)" + +#: src/pyams_i18n/language.py:192 +msgid "Tonga" +msgstr "Tonga" + +#: src/pyams_i18n/language.py:193 src/pyams_i18n/language.py:440 +msgid "Turkish" +msgstr "Turc" + +#: src/pyams_i18n/language.py:194 +msgid "Tsonga" +msgstr "Tsonga (Afrique du Sud)" + +#: src/pyams_i18n/language.py:195 +msgid "Tatar" +msgstr "Tatar" + +#: src/pyams_i18n/language.py:196 +msgid "Twi" +msgstr "Twi (Ghana)" + +#: src/pyams_i18n/language.py:197 +msgid "Tahitian" +msgstr "Tahitien" + +#: src/pyams_i18n/language.py:198 +msgid "Uighur" +msgstr "Ouïgour (Chine)" + +#: src/pyams_i18n/language.py:199 src/pyams_i18n/language.py:443 +msgid "Ukrainian" +msgstr "Ukrainien" + +#: src/pyams_i18n/language.py:200 +msgid "Urdu" +msgstr "Urdu (Inde)" + +#: src/pyams_i18n/language.py:201 +msgid "Uzbek" +msgstr "Ouzbek" + +#: src/pyams_i18n/language.py:202 +msgid "Venda" +msgstr "Venda (Afrique-du-Sud)" + +#: src/pyams_i18n/language.py:203 src/pyams_i18n/language.py:448 +msgid "Vietnamese" +msgstr "Vietnamien" + +#: src/pyams_i18n/language.py:204 +msgid "Volapuk" +msgstr "Volapuk" + +#: src/pyams_i18n/language.py:205 +msgid "Walloon" +msgstr "Wallon" + +#: src/pyams_i18n/language.py:206 +msgid "Wolof" +msgstr "Wolof (Sénégal)" + +#: src/pyams_i18n/language.py:207 +msgid "Xhosa" +msgstr "Xhosa (Afrique du Sud)" + +#: src/pyams_i18n/language.py:208 +msgid "Yiddish" +msgstr "Yiddish" + +#: src/pyams_i18n/language.py:209 +msgid "Yoruba" +msgstr "Yoruba (Niger, Congo)" + +#: src/pyams_i18n/language.py:210 +msgid "Zhuang" +msgstr "Zhuang (Chine)" + +#: src/pyams_i18n/language.py:211 +msgid "Chinese" +msgstr "Chinois" + +#: src/pyams_i18n/language.py:212 +msgid "Zulu" +msgstr "Zoulou (Afrique du Sud)" + +#: src/pyams_i18n/language.py:229 +msgid "Afar (Ethiopia)" +msgstr "Afar (Éthiopie)" + +#: src/pyams_i18n/language.py:231 +msgid "Avestan (Iran)" +msgstr "Avestique (Iran)" + +#: src/pyams_i18n/language.py:233 +msgid "Akan (Ghana)" +msgstr "Akan (Ghana)" + +#: src/pyams_i18n/language.py:234 +msgid "Amharic (Ethiopia)" +msgstr "Amharique (Éthiopie)" + +#: src/pyams_i18n/language.py:235 +msgid "Aragonese (Spain)" +msgstr "Aragonais (Espagne)" + +#: src/pyams_i18n/language.py:236 +msgid "Arabic united Arab Emirates)" +msgstr "Arabe (Émirats Arabes Unis)" + +#: src/pyams_i18n/language.py:237 +msgid "Arabic (Bahrain)" +msgstr "Arabe (Bahrain)" + +#: src/pyams_i18n/language.py:238 +msgid "Arabic (Algeria)" +msgstr "Arabe (Algérie)" + +#: src/pyams_i18n/language.py:239 +msgid "Arabic (Egypt)" +msgstr "Arabe (Égypte)" + +#: src/pyams_i18n/language.py:240 +msgid "Arabic (Iraq)" +msgstr "Arabe (Irak)" + +#: src/pyams_i18n/language.py:241 +msgid "Arabic (Jordan)" +msgstr "Arabe (Jordanie)" + +#: src/pyams_i18n/language.py:242 +msgid "Arabic (Kuwait)" +msgstr "Arabe (Koweit)" + +#: src/pyams_i18n/language.py:243 +msgid "Arabic (Lebanon)" +msgstr "Arabe (Liban)" + +#: src/pyams_i18n/language.py:244 +msgid "Arabic (Libyan Arab Jamahiriya)" +msgstr "Arabe (Lybie)" + +#: src/pyams_i18n/language.py:245 +msgid "Arabic (Morocco)" +msgstr "Arabe (Maroc)" + +#: src/pyams_i18n/language.py:246 +msgid "Arabic (Oman)" +msgstr "Arabe (Oman)" + +#: src/pyams_i18n/language.py:247 +msgid "Arabic (Qatar)" +msgstr "Arabe (Qatar)" + +#: src/pyams_i18n/language.py:248 +msgid "Arabic (Saudi Arabia)" +msgstr "Arabe (Arabie Saoudite)" + +#: src/pyams_i18n/language.py:249 +msgid "Arabic (Syrian Arab Republic)" +msgstr "Arabe (Syrie)" + +#: src/pyams_i18n/language.py:250 +msgid "Arabic (Tunisia)" +msgstr "Arabe (Tunisie)" + +#: src/pyams_i18n/language.py:251 +msgid "Arabic (Yemen)" +msgstr "Arabe (Yemen)" + +#: src/pyams_i18n/language.py:252 +msgid "Mapudungun (Chile)" +msgstr "Mapudungun (Chili)" + +#: src/pyams_i18n/language.py:253 +msgid "Assamese (India)" +msgstr "Assamais (Inde)" + +#: src/pyams_i18n/language.py:254 +msgid "Asturien" +msgstr "Asturien" + +#: src/pyams_i18n/language.py:255 +msgid "Avaric (Russia)" +msgstr "Avar (Russie)" + +#: src/pyams_i18n/language.py:256 +msgid "Aymara (Bolivia)" +msgstr "Aymara (Bolivie)" + +#: src/pyams_i18n/language.py:257 +msgid "Azerbaijani (Cyrillic)" +msgstr "Azéri (cyrillique)" + +#: src/pyams_i18n/language.py:258 +msgid "Azerbaijani (Latin)" +msgstr "Azéri (latin)" + +#: src/pyams_i18n/language.py:259 +msgid "Bashkir (Russia)" +msgstr "Bashkir (Russie)" + +#: src/pyams_i18n/language.py:260 +msgid "Belarusian (Belarus)" +msgstr "Biélorusse" + +#: src/pyams_i18n/language.py:261 +msgid "Berber (Algeria, Latin)" +msgstr "Berbère (Algérie, latin)" + +#: src/pyams_i18n/language.py:263 +msgid "Bihari (India)" +msgstr "Bihari (Inde)" + +#: src/pyams_i18n/language.py:264 +msgid "Bislama (Vanuatu)" +msgstr "Bislama (Vanuatu)" + +#: src/pyams_i18n/language.py:265 +msgid "Bambara (Mali)" +msgstr "Bambara (Mali)" + +#: src/pyams_i18n/language.py:266 +msgid "Bengali (India)" +msgstr "Bengali (Inde)" + +#: src/pyams_i18n/language.py:267 +msgid "Tibetan (Bhutan)" +msgstr "Tibétain (Bhoutan)" + +#: src/pyams_i18n/language.py:268 +msgid "Tibetan (China)" +msgstr "Tibétain (Chine)" + +#: src/pyams_i18n/language.py:270 +msgid "Bosnian (Bosnia Herzegovina, Cyrillic)" +msgstr "Bosniaque (Bosnie Herzégovine, cyrillique)" + +#: src/pyams_i18n/language.py:271 +msgid "Bosnian (Bosnie Herzegovina, Latin)" +msgstr "Bosniaque (Bosnie Herzégovine, latin)" + +#: src/pyams_i18n/language.py:272 +msgid "Catalan (Andorra)" +msgstr "Catalan (Andore)" + +#: src/pyams_i18n/language.py:273 +msgid "Catalan (Spain)" +msgstr "Catalan (Espagne)" + +#: src/pyams_i18n/language.py:274 +msgid "Catalan (France)" +msgstr "Catalan (France)" + +#: src/pyams_i18n/language.py:277 +msgid "Corsican (France)" +msgstr "Corse (France)" + +#: src/pyams_i18n/language.py:278 +msgid "Cree (Canada)" +msgstr "Cree (Canada)" + +#: src/pyams_i18n/language.py:280 +msgid "Old Slavonic" +msgstr "Vieux slave" + +#: src/pyams_i18n/language.py:281 +msgid "Chuvash (Russia)" +msgstr "Tchouvache (Russie)" + +#: src/pyams_i18n/language.py:284 +msgid "German (Austria)" +msgstr "Allemand (Autriche)" + +#: src/pyams_i18n/language.py:285 +msgid "German (Swotzerland)" +msgstr "Allemand (Suisse)" + +#: src/pyams_i18n/language.py:286 +msgid "German (Germany)" +msgstr "Allemand (Allemagne)" + +#: src/pyams_i18n/language.py:287 +msgid "German (Liechtenstein)" +msgstr "Allemand (Liechtenstein)" + +#: src/pyams_i18n/language.py:288 +msgid "German (Luxembourg)" +msgstr "Allemand (Luxembourg)" + +#: src/pyams_i18n/language.py:289 +msgid "Divehi (Maldives)" +msgstr "Maldivien" + +#: src/pyams_i18n/language.py:290 +msgid "Dzongkha (Bhutan)" +msgstr "Dzongkha (Bhoutan)" + +#: src/pyams_i18n/language.py:291 +msgid "Ewe (Ghana)" +msgstr "Ewe (Ghana)" + +#: src/pyams_i18n/language.py:293 +msgid "English (Australia)" +msgstr "Anglais (Australie)" + +#: src/pyams_i18n/language.py:294 +msgid "English (Belize)" +msgstr "Anglais (Belize)" + +#: src/pyams_i18n/language.py:295 +msgid "English (Canada)" +msgstr "Anglais (Canada)" + +#: src/pyams_i18n/language.py:296 +msgid "English (Caraibes)" +msgstr "Anglais (Caraïbes)" + +#: src/pyams_i18n/language.py:297 +msgid "English (United Kingdom)" +msgstr "Anglais (Royaume Uni)" + +#: src/pyams_i18n/language.py:298 +msgid "English (Ireland)" +msgstr "Anglais (Irlande)" + +#: src/pyams_i18n/language.py:299 +msgid "English (India)" +msgstr "Anglais (Inde)" + +#: src/pyams_i18n/language.py:300 +msgid "English (Jamaica)" +msgstr "Anglais (Jamaïque)" + +#: src/pyams_i18n/language.py:301 +msgid "English (Malaysia)" +msgstr "Anglais (Malaisie)" + +#: src/pyams_i18n/language.py:302 +msgid "English (New Zealand)" +msgstr "Anglais (Nouvelle Zélande)" + +#: src/pyams_i18n/language.py:303 +msgid "English (Philippines)" +msgstr "Anglais (Philippines)" + +#: src/pyams_i18n/language.py:304 +msgid "English (Singapore)" +msgstr "Anglais (Singapour)" + +#: src/pyams_i18n/language.py:305 +msgid "English (Trinidad)" +msgstr "Anglais (Trinidad)" + +#: src/pyams_i18n/language.py:306 +msgid "English (United States)" +msgstr "Anglais (États-Unis)" + +#: src/pyams_i18n/language.py:307 +msgid "English (South Africa)" +msgstr "Anglais (Afrique du Sud)" + +#: src/pyams_i18n/language.py:308 +msgid "English (Zimbabwe)" +msgstr "Anglais (Zimbabwe)" + +#: src/pyams_i18n/language.py:310 +msgid "Spanish (Argentina)" +msgstr "Espagnol (Argentine)" + +#: src/pyams_i18n/language.py:311 +msgid "Spanish (Bolivia)" +msgstr "Espagnol (Bolivie)" + +#: src/pyams_i18n/language.py:312 +msgid "Spanish (Chile)" +msgstr "Espagnol (Chili)" + +#: src/pyams_i18n/language.py:313 +msgid "Spanish (Colombia)" +msgstr "Espagnol (Colombie)" + +#: src/pyams_i18n/language.py:314 +msgid "Spanish (Costa Rica)" +msgstr "Espagnol (Costa Rica)" + +#: src/pyams_i18n/language.py:315 +msgid "Spanish (Dominican Republic)" +msgstr "Espagnol (République Dominicaine)" + +#: src/pyams_i18n/language.py:316 +msgid "Spanish (Ecuador)" +msgstr "Espagnol (Équateur)" + +#: src/pyams_i18n/language.py:317 +msgid "Spanish (Spain)" +msgstr "Espagnol (Espagne)" + +#: src/pyams_i18n/language.py:318 +msgid "Spanish (Spain, Traditional)" +msgstr "Espagnol (Espagne, traditionnel)" + +#: src/pyams_i18n/language.py:319 +msgid "Spanish (Guatemala)" +msgstr "Espagnol (Guatemala)" + +#: src/pyams_i18n/language.py:320 +msgid "Spanish (Honduras)" +msgstr "Espagnol (Honduras)" + +#: src/pyams_i18n/language.py:321 +msgid "Spanish (Mexico)" +msgstr "Espagnol (Mexique)" + +#: src/pyams_i18n/language.py:322 +msgid "Spanish (Nicaragua)" +msgstr "Espagnol (Nicaragua)" + +#: src/pyams_i18n/language.py:323 +msgid "Spanish (Panama)" +msgstr "Espagnol (Panama)" + +#: src/pyams_i18n/language.py:324 +msgid "Spanish (Peru)" +msgstr "Espagnol (Pérou)" + +#: src/pyams_i18n/language.py:325 +msgid "Spanish (Puerto Rico)" +msgstr "Espagnol (Porto Rico)" + +#: src/pyams_i18n/language.py:326 +msgid "Spanish (Paraguay)" +msgstr "Espagnol (Paraguay)" + +#: src/pyams_i18n/language.py:327 +msgid "Spanish (El Salvador)" +msgstr "Espagnol (Salvador)" + +#: src/pyams_i18n/language.py:328 +msgid "Spanish (Uruguay)" +msgstr "Espagnol (Uruguay)" + +#: src/pyams_i18n/language.py:329 +msgid "Spanish (United States)" +msgstr "Espagnol (États Unis)" + +#: src/pyams_i18n/language.py:330 +msgid "Spanish (Venezuela)" +msgstr "Espagnol (Venezuela)" + +#: src/pyams_i18n/language.py:331 +msgid "Estonian (Estonia)" +msgstr "Estonien" + +#: src/pyams_i18n/language.py:333 +msgid "Persian (Iran)" +msgstr "Perse (Iran)" + +#: src/pyams_i18n/language.py:334 +msgid "Finish" +msgstr "Finnois" + +#: src/pyams_i18n/language.py:335 +msgid "Philippine" +msgstr "Philippin" + +#: src/pyams_i18n/language.py:337 +msgid "Faroese (Faroe Islands)" +msgstr "Féroïen" + +#: src/pyams_i18n/language.py:338 +msgid "French (France)" +msgstr "Français (France)" + +#: src/pyams_i18n/language.py:339 +msgid "French (Belgium)" +msgstr "Français (Belgique)" + +#: src/pyams_i18n/language.py:340 +msgid "French (Canada)" +msgstr "Français (Canada)" + +#: src/pyams_i18n/language.py:341 +msgid "French (Switzerland)" +msgstr "Français (Suisse)" + +#: src/pyams_i18n/language.py:342 +msgid "French (Luxembourg)" +msgstr "Français (Luxembourg)" + +#: src/pyams_i18n/language.py:343 +msgid "French (Monaco)" +msgstr "Français (Monaco)" + +#: src/pyams_i18n/language.py:344 +msgid "Frioulan (Italia)" +msgstr "Frioulan (Italie)" + +#: src/pyams_i18n/language.py:345 +msgid "Frisian (Netherlands)" +msgstr "Frison (Pays-Bas)" + +#: src/pyams_i18n/language.py:347 +msgid "Dari (Afghanistan)" +msgstr "Dari (Afghanistan)" + +#: src/pyams_i18n/language.py:348 +msgid "Gaelic (Scotland)" +msgstr "Gaélique (Écosse)" + +#: src/pyams_i18n/language.py:350 +msgid "Alsatian (France)" +msgstr "Alsacien (France)" + +#: src/pyams_i18n/language.py:351 +msgid "Gujarati (India)" +msgstr "Goudjrati (Inde)" + +#: src/pyams_i18n/language.py:352 +msgid "Hausa (Nigeria)" +msgstr "Haoussa (Nigeria)" + +#: src/pyams_i18n/language.py:353 +msgid "Hebrew (Israel)" +msgstr "Hébreu" + +#: src/pyams_i18n/language.py:354 +msgid "Hindi (Inde)" +msgstr "Hindi (Inde)" + +#: src/pyams_i18n/language.py:355 +msgid "Croatian (Bosnia Herzegovina, Latin)" +msgstr "Croate (Bosnie Herzégovine, latin)" + +#: src/pyams_i18n/language.py:356 +msgid "Croatian (Croatia)" +msgstr "Croate (Croatie)" + +#: src/pyams_i18n/language.py:358 +msgid "Armenian (Armenia)" +msgstr "Arménien" + +#: src/pyams_i18n/language.py:360 +msgid "Yi (China)" +msgstr "Yi (Chine)" + +#: src/pyams_i18n/language.py:361 +msgid "Inuktitut (Canada, Syllabic)" +msgstr "Inuktitut (Canada, syllabique)" + +#: src/pyams_i18n/language.py:362 +msgid "Inuktitut (Canada, Latin)" +msgstr "Inuktitut (Canada, latin)" + +#: src/pyams_i18n/language.py:364 +msgid "Italian (Switzerland)" +msgstr "Italien (Suisse)" + +#: src/pyams_i18n/language.py:365 +msgid "Italian (Italia)" +msgstr "Italien (Italie)" + +#: src/pyams_i18n/language.py:367 +msgid "Japanese (Japan, Mac)" +msgstr "Japonais (Japon, mac.)" + +#: src/pyams_i18n/language.py:369 +msgid "Kazakh (Kazakhstan)" +msgstr "Kazakh" + +#: src/pyams_i18n/language.py:370 +msgid "Greenlandic" +msgstr "Groenlandais" + +#: src/pyams_i18n/language.py:371 +msgid "Khmer (Cambodia)" +msgstr "Khmer (Cambodje)" + +#: src/pyams_i18n/language.py:372 +msgid "Kannada (India)" +msgstr "Kannada (Inde)" + +#: src/pyams_i18n/language.py:373 +msgid "Korean (Korea)" +msgstr "Coréen" + +#: src/pyams_i18n/language.py:374 +msgid "Konkani (India)" +msgstr "Konkani (Inde)" + +#: src/pyams_i18n/language.py:376 +msgid "Kirghiz (Kyrgizstan)" +msgstr "Kirghiz (Kirghizistan)" + +#: src/pyams_i18n/language.py:379 +msgid "Lituanian" +msgstr "Lituanien" + +#: src/pyams_i18n/language.py:381 +msgid "Maori (New Zealand)" +msgstr "Maori (Nouvelle Zélande)" + +#: src/pyams_i18n/language.py:383 +msgid "Malayalam (Inde)" +msgstr "Malayalam (Inde)" + +#: src/pyams_i18n/language.py:384 +msgid "Mongolian (China)" +msgstr "Mongol (Chine)" + +#: src/pyams_i18n/language.py:385 +msgid "Mongolian (Mongolia)" +msgstr "Mongol (Mongolie)" + +#: src/pyams_i18n/language.py:386 +msgid "Mohawk (Canada)" +msgstr "Mohawk (Canada)" + +#: src/pyams_i18n/language.py:387 +msgid "Marathi (Inde)" +msgstr "Marathi (Inde)" + +#: src/pyams_i18n/language.py:388 +msgid "Malay (Brunei)" +msgstr "Malais (Bruneï)" + +#: src/pyams_i18n/language.py:391 +msgid "Burmese (Myanmar)" +msgstr "Burmese (Myanmar)" + +#: src/pyams_i18n/language.py:392 +msgid "Norwegian (Bokmal)" +msgstr "Norvégien (Bokmål)" + +#: src/pyams_i18n/language.py:393 +msgid "Norwegian (Nynorsk)" +msgstr "Norvégien (Nynorsk)" + +#: src/pyams_i18n/language.py:395 +msgid "Dutch (Belgium)" +msgstr "Néerlandais (Belgique)" + +#: src/pyams_i18n/language.py:396 +msgid "Dutch (Netherlands)" +msgstr "Néerlandais (Pays-Bas)" + +#: src/pyams_i18n/language.py:397 +msgid "Occitan (France)" +msgstr "Occitan (France)" + +#: src/pyams_i18n/language.py:398 +msgid "Oriya (India)" +msgstr "Oriya (Inde)" + +#: src/pyams_i18n/language.py:399 +msgid "Punjabi (India)" +msgstr "Punjabi (Inde)" + +#: src/pyams_i18n/language.py:401 +msgid "Pachto (Afghanistan)" +msgstr "Pachto (Afghanistan)" + +#: src/pyams_i18n/language.py:402 +msgid "Portuguese (Brazil)" +msgstr "Portugais (Brésil)" + +#: src/pyams_i18n/language.py:403 +msgid "Portuguese (Portugal)" +msgstr "Portugais (Portugal)" + +#: src/pyams_i18n/language.py:404 +msgid "Quechua (Bolivia)" +msgstr "Quechua (Bolivie)" + +#: src/pyams_i18n/language.py:405 +msgid "Quechua (Ecuador)" +msgstr "Quechua (Équateur)" + +#: src/pyams_i18n/language.py:406 +msgid "Quechua (Peru)" +msgstr "Quechua (Pérou)" + +#: src/pyams_i18n/language.py:407 +msgid "Romansh" +msgstr "Romanche" + +#: src/pyams_i18n/language.py:410 +msgid "Kinyarwanda (Rwanda)" +msgstr "Kinyarwanda (Rwanda)" + +#: src/pyams_i18n/language.py:411 +msgid "Sanskrit (Inde)" +msgstr "Sanskrit (Inde)" + +#: src/pyams_i18n/language.py:412 +msgid "Yakut (Russia)" +msgstr "Yakut (Russie)" + +#: src/pyams_i18n/language.py:413 +msgid "Sami (Northern, Finland)" +msgstr "Sami (du Nord, Finlande)" + +#: src/pyams_i18n/language.py:414 +msgid "Sami (Northern, Norway)" +msgstr "Sami (du Nord, Norvège)" + +#: src/pyams_i18n/language.py:415 +msgid "Sami (Northern, Sweden)" +msgstr "Sami (du Nord, Suède)" + +#: src/pyams_i18n/language.py:416 +msgid "Sinhala (Sri Lanka)" +msgstr "Sinhala (Sri Lanka)" + +#: src/pyams_i18n/language.py:418 +msgid "Slovenian" +msgstr "Slovène" + +#: src/pyams_i18n/language.py:419 +msgid "Serbian (Bosnia Herzegovina, Cyrillic)" +msgstr "Serbe (Bosnie Herzégovine, cyrillique)" + +#: src/pyams_i18n/language.py:420 +msgid "Serbian (Bosnia Herzegovina, Latin)" +msgstr "Serbe (Bosnie Herzégovine, latin)" + +#: src/pyams_i18n/language.py:421 +msgid "Serbian (Serbia and Montenegro, Cyrillic)" +msgstr "Serbe (Serbie et Monténégro, cyrillique)" + +#: src/pyams_i18n/language.py:422 +msgid "Serbian (Serbia and Montenegro, Latin)" +msgstr "Serbe (Serbie et Monténégro, latin)" + +#: src/pyams_i18n/language.py:423 +msgid "Sami (Southern, Norway)" +msgstr "Sami (du Sud, Norvège)" + +#: src/pyams_i18n/language.py:424 +msgid "Sami (Southern, Sweden)" +msgstr "Sami (du Sud, Suède)" + +#: src/pyams_i18n/language.py:425 +msgid "Sami (Lule, Norway)" +msgstr "Sami (de Lule, Norvège)" + +#: src/pyams_i18n/language.py:426 +msgid "Sami (Lule, Sweden)" +msgstr "Sami (de Lule, Suède)" + +#: src/pyams_i18n/language.py:427 +msgid "Sami (Inari, Finland)" +msgstr "Sami (d'Inari, Finlande)" + +#: src/pyams_i18n/language.py:428 +msgid "Sami (Skolt, Finland)" +msgstr "Sami (Skolt, Finlande)" + +#: src/pyams_i18n/language.py:430 +msgid "Swedish (Finland)" +msgstr "Suédois (Finlande)" + +#: src/pyams_i18n/language.py:431 +msgid "Swedish (Sweden)" +msgstr "Suédois (Suède)" + +#: src/pyams_i18n/language.py:432 +msgid "Swahili (Kenya)" +msgstr "Swahili (Kenya)" + +#: src/pyams_i18n/language.py:433 +msgid "Syriac" +msgstr "Syriaque" + +#: src/pyams_i18n/language.py:434 +msgid "Tamil (India)" +msgstr "Tamil (Inde)" + +#: src/pyams_i18n/language.py:435 +msgid "Telugu (India)" +msgstr "Telugu (Inde)" + +#: src/pyams_i18n/language.py:436 +msgid "Tajik (Tajikistan)" +msgstr "Tadjik (Tadjikistan)" + +#: src/pyams_i18n/language.py:437 +msgid "Thai (Thailand)" +msgstr "Thaï (Thaïlande)" + +#: src/pyams_i18n/language.py:438 +msgid "Turkmen (Turkmenistan)" +msgstr "Turkmène" + +#: src/pyams_i18n/language.py:439 +msgid "Tswana (South Africa)" +msgstr "Tswana (Afrique du Sud)" + +#: src/pyams_i18n/language.py:441 +msgid "Tatar (Russia)" +msgstr "Tatar (Russie)" + +#: src/pyams_i18n/language.py:442 +msgid "Uighur (China)" +msgstr "Ouïgour (Chine)" + +#: src/pyams_i18n/language.py:444 +msgid "Urdu (Inde)" +msgstr "Urdu (Inde)" + +#: src/pyams_i18n/language.py:445 +msgid "Urdu (Pakistan)" +msgstr "Urdu (Pakistan)" + +#: src/pyams_i18n/language.py:446 +msgid "Uzbek uzbekistan, Cyrillic)" +msgstr "Ouszbek (Ouszbekistan, cyrillique)" + +#: src/pyams_i18n/language.py:447 +msgid "Uzbek uzbekistan, Latin)" +msgstr "Ouszbek (Ouszbekistan, latin)" + +#: src/pyams_i18n/language.py:449 +msgid "Sorbian (Germany)" +msgstr "Sorabe (Allemagne)" + +#: src/pyams_i18n/language.py:450 +msgid "Wolof (Senegal)" +msgstr "Wolof (Sénégal)" + +#: src/pyams_i18n/language.py:451 +msgid "Xhosa (South Africa)" +msgstr "Xhosa (Afrique du Sud)" + +#: src/pyams_i18n/language.py:452 +msgid "Yoruba (Nigeria)" +msgstr "Yoruba (Nigeria)" + +#: src/pyams_i18n/language.py:453 +msgid "Chinese (Simplified)" +msgstr "Chinois (simplifié)" + +#: src/pyams_i18n/language.py:454 +msgid "Chinese (Traditional)" +msgstr "Chinois (traditionnel)" + +#: src/pyams_i18n/language.py:455 +msgid "Chinese (China)" +msgstr "Chinois (Chine)" + +#: src/pyams_i18n/language.py:456 +msgid "Chinese (Hong Kong, China)" +msgstr "Chinois (Hong-Kong, Chine)" + +#: src/pyams_i18n/language.py:457 +msgid "Chinese (Macao)" +msgstr "Chinois (Macao)" + +#: src/pyams_i18n/language.py:458 +msgid "Chinese (Singapore)" +msgstr "Chinois (Singapour)" + +#: src/pyams_i18n/language.py:459 +msgid "Chinese (Taiwan)" +msgstr "Chinois (Taïwan)" + +#: src/pyams_i18n/language.py:460 +msgid "Zulu (South Africa)" +msgstr "Zoulou (Afrique du Sud)" + +#: src/pyams_i18n/zmi/negotiator.py:37 +msgid "Update languages negotiator properties" +msgstr "Mise à jour des propriétés du gestionnaire de langues" + +#: src/pyams_i18n/interfaces/__init__.py:41 +msgid "Language lookup policy" +msgstr "Politique de sélection" + +#: src/pyams_i18n/interfaces/__init__.py:42 +msgid "Defines how the language lookup is working." +msgstr "Détermine les priorités dans le mode de sélection de la langue" + +#: src/pyams_i18n/interfaces/__init__.py:47 +msgid "Server language" +msgstr "Langue du serveur" + +#: src/pyams_i18n/interfaces/__init__.py:48 +msgid "The language used for server policy." +msgstr "Langue utilisée pour la politique 'server'" + +#: src/pyams_i18n/interfaces/__init__.py:53 +msgid "Offered languages" +msgstr "Langues proposées" + +#: src/pyams_i18n/interfaces/__init__.py:54 +msgid "" +"A list of offered languages. Can be used to user select languages which are " +"offered in a skin." +msgstr "" +"Une liste des langues proposées. Peut être utilisé pour indiquer les langues " +"proposées au sein d'un skin." + +#: src/pyams_i18n/interfaces/__init__.py:61 +msgid "Language caching enabled" +msgstr "Activer le cache" + +#: src/pyams_i18n/interfaces/__init__.py:62 +msgid "Language caching enabled (per request)" +msgstr "Un cache de langue peut être activé pour chaque requête..." + +#: src/pyams_i18n/interfaces/__init__.py:68 +msgid "Unsupported language policy" +msgstr "Cette politique de sélection de langue n'est pas supportée..." diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/locales/pyams_i18n.pot --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n/locales/pyams_i18n.pot Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,1583 @@ +# +# SOME DESCRIPTIVE TITLE +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , 2015. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE 1.0\n" +"POT-Creation-Date: 2015-02-03 21:41+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Lingua 3.8\n" + +#: ./src/pyams_i18n/language.py:28 +msgid "Afar" +msgstr "" + +#: ./src/pyams_i18n/language.py:29 ./src/pyams_i18n/language.py:230 +msgid "Abkhazian" +msgstr "" + +#: ./src/pyams_i18n/language.py:30 +msgid "Avestan" +msgstr "" + +#: ./src/pyams_i18n/language.py:31 ./src/pyams_i18n/language.py:232 +msgid "Afrikaans" +msgstr "" + +#: ./src/pyams_i18n/language.py:32 +msgid "Akan" +msgstr "" + +#: ./src/pyams_i18n/language.py:33 +msgid "Amharic" +msgstr "" + +#: ./src/pyams_i18n/language.py:34 +msgid "Aragonese" +msgstr "" + +#: ./src/pyams_i18n/language.py:35 +msgid "Arabic" +msgstr "" + +#: ./src/pyams_i18n/language.py:36 +msgid "Assamese" +msgstr "" + +#: ./src/pyams_i18n/language.py:37 +msgid "Avaric" +msgstr "" + +#: ./src/pyams_i18n/language.py:38 +msgid "Aymara" +msgstr "" + +#: ./src/pyams_i18n/language.py:39 +msgid "Azerbaijani" +msgstr "" + +#: ./src/pyams_i18n/language.py:40 +msgid "Bashkir" +msgstr "" + +#: ./src/pyams_i18n/language.py:41 +msgid "Belarusian" +msgstr "" + +#: ./src/pyams_i18n/language.py:42 ./src/pyams_i18n/language.py:262 +msgid "Bulgarian" +msgstr "" + +#: ./src/pyams_i18n/language.py:43 +msgid "Bihari" +msgstr "" + +#: ./src/pyams_i18n/language.py:44 +msgid "Bislama" +msgstr "" + +#: ./src/pyams_i18n/language.py:45 +msgid "Bambara" +msgstr "" + +#: ./src/pyams_i18n/language.py:46 +msgid "Bengali" +msgstr "" + +#: ./src/pyams_i18n/language.py:47 +msgid "Tibetan" +msgstr "" + +#: ./src/pyams_i18n/language.py:48 ./src/pyams_i18n/language.py:269 +msgid "Breton" +msgstr "" + +#: ./src/pyams_i18n/language.py:49 +msgid "Bosnian" +msgstr "" + +#: ./src/pyams_i18n/language.py:50 +msgid "Catalan" +msgstr "" + +#: ./src/pyams_i18n/language.py:51 ./src/pyams_i18n/language.py:275 +msgid "Chechen" +msgstr "" + +#: ./src/pyams_i18n/language.py:52 ./src/pyams_i18n/language.py:276 +msgid "Chamorro" +msgstr "" + +#: ./src/pyams_i18n/language.py:53 +msgid "Corsican" +msgstr "" + +#: ./src/pyams_i18n/language.py:54 +msgid "Cree" +msgstr "" + +#: ./src/pyams_i18n/language.py:55 ./src/pyams_i18n/language.py:279 +msgid "Czech" +msgstr "" + +#: ./src/pyams_i18n/language.py:56 +msgid "Old Church Slavonic" +msgstr "" + +#: ./src/pyams_i18n/language.py:57 +msgid "Chuvash" +msgstr "" + +#: ./src/pyams_i18n/language.py:58 ./src/pyams_i18n/language.py:282 +msgid "Welsh" +msgstr "" + +#: ./src/pyams_i18n/language.py:59 ./src/pyams_i18n/language.py:283 +msgid "Danish" +msgstr "" + +#: ./src/pyams_i18n/language.py:60 +msgid "German" +msgstr "" + +#: ./src/pyams_i18n/language.py:61 +msgid "Divehi" +msgstr "" + +#: ./src/pyams_i18n/language.py:62 +msgid "Dzongkha" +msgstr "" + +#: ./src/pyams_i18n/language.py:63 +msgid "Ewe" +msgstr "" + +#: ./src/pyams_i18n/language.py:64 ./src/pyams_i18n/language.py:292 +msgid "Greek" +msgstr "" + +#: ./src/pyams_i18n/language.py:65 +msgid "English" +msgstr "" + +#: ./src/pyams_i18n/language.py:66 ./src/pyams_i18n/language.py:309 +msgid "Esperanto" +msgstr "" + +#: ./src/pyams_i18n/language.py:67 +msgid "Spanish" +msgstr "" + +#: ./src/pyams_i18n/language.py:68 +msgid "Estonian" +msgstr "" + +#: ./src/pyams_i18n/language.py:69 ./src/pyams_i18n/language.py:332 +msgid "Basque" +msgstr "" + +#: ./src/pyams_i18n/language.py:70 +msgid "Persian" +msgstr "" + +#: ./src/pyams_i18n/language.py:71 +msgid "Fulah" +msgstr "" + +#: ./src/pyams_i18n/language.py:72 +msgid "Finnish" +msgstr "" + +#: ./src/pyams_i18n/language.py:73 ./src/pyams_i18n/language.py:336 +msgid "Fijian" +msgstr "" + +#: ./src/pyams_i18n/language.py:74 +msgid "Faroese" +msgstr "" + +#: ./src/pyams_i18n/language.py:75 +msgid "French" +msgstr "" + +#: ./src/pyams_i18n/language.py:76 +msgid "Western Frisian" +msgstr "" + +#: ./src/pyams_i18n/language.py:77 ./src/pyams_i18n/language.py:346 +msgid "Irish" +msgstr "" + +#: ./src/pyams_i18n/language.py:78 +msgid "Scottish Gaelic" +msgstr "" + +#: ./src/pyams_i18n/language.py:79 ./src/pyams_i18n/language.py:349 +msgid "Galician" +msgstr "" + +#: ./src/pyams_i18n/language.py:80 +msgid "Guarani" +msgstr "" + +#: ./src/pyams_i18n/language.py:81 +msgid "Gujarati" +msgstr "" + +#: ./src/pyams_i18n/language.py:82 +msgid "Manx" +msgstr "" + +#: ./src/pyams_i18n/language.py:83 +msgid "Hausa" +msgstr "" + +#: ./src/pyams_i18n/language.py:84 +msgid "Hebrew" +msgstr "" + +#: ./src/pyams_i18n/language.py:85 +msgid "Hindi" +msgstr "" + +#: ./src/pyams_i18n/language.py:86 +msgid "Hiri Motu" +msgstr "" + +#: ./src/pyams_i18n/language.py:87 +msgid "Croatian" +msgstr "" + +#: ./src/pyams_i18n/language.py:88 +msgid "Haitian" +msgstr "" + +#: ./src/pyams_i18n/language.py:89 ./src/pyams_i18n/language.py:357 +msgid "Hungarian" +msgstr "" + +#: ./src/pyams_i18n/language.py:90 +msgid "Armenian" +msgstr "" + +#: ./src/pyams_i18n/language.py:91 +msgid "Herero" +msgstr "" + +#: ./src/pyams_i18n/language.py:92 +msgid "Interlingua" +msgstr "" + +#: ./src/pyams_i18n/language.py:93 ./src/pyams_i18n/language.py:359 +msgid "Indonesian" +msgstr "" + +#: ./src/pyams_i18n/language.py:94 +msgid "Interlingue" +msgstr "" + +#: ./src/pyams_i18n/language.py:95 +msgid "Igbo" +msgstr "" + +#: ./src/pyams_i18n/language.py:96 +msgid "Sichuan Yi" +msgstr "" + +#: ./src/pyams_i18n/language.py:97 +msgid "Inupiaq" +msgstr "" + +#: ./src/pyams_i18n/language.py:98 +msgid "Ido" +msgstr "" + +#: ./src/pyams_i18n/language.py:99 ./src/pyams_i18n/language.py:363 +msgid "Icelandic" +msgstr "" + +#: ./src/pyams_i18n/language.py:100 +msgid "Italian" +msgstr "" + +#: ./src/pyams_i18n/language.py:101 +msgid "Inuktitut" +msgstr "" + +#: ./src/pyams_i18n/language.py:102 ./src/pyams_i18n/language.py:366 +msgid "Japanese" +msgstr "" + +#: ./src/pyams_i18n/language.py:103 +msgid "Javanese" +msgstr "" + +#: ./src/pyams_i18n/language.py:104 ./src/pyams_i18n/language.py:368 +msgid "Georgian" +msgstr "" + +#: ./src/pyams_i18n/language.py:105 +msgid "Kongo" +msgstr "" + +#: ./src/pyams_i18n/language.py:106 +msgid "Kikuyu" +msgstr "" + +#: ./src/pyams_i18n/language.py:107 +msgid "Kwanyama" +msgstr "" + +#: ./src/pyams_i18n/language.py:108 +msgid "Kazakh" +msgstr "" + +#: ./src/pyams_i18n/language.py:109 +msgid "Kalaallisut" +msgstr "" + +#: ./src/pyams_i18n/language.py:110 +msgid "Khmer" +msgstr "" + +#: ./src/pyams_i18n/language.py:111 +msgid "Kannada" +msgstr "" + +#: ./src/pyams_i18n/language.py:112 +msgid "Korean" +msgstr "" + +#: ./src/pyams_i18n/language.py:113 +msgid "Kanuri" +msgstr "" + +#: ./src/pyams_i18n/language.py:114 +msgid "Kashmiri" +msgstr "" + +#: ./src/pyams_i18n/language.py:115 +msgid "Kurdish" +msgstr "" + +#: ./src/pyams_i18n/language.py:116 +msgid "Komi" +msgstr "" + +#: ./src/pyams_i18n/language.py:117 ./src/pyams_i18n/language.py:375 +msgid "Cornish" +msgstr "" + +#: ./src/pyams_i18n/language.py:118 +msgid "Kirghiz" +msgstr "" + +#: ./src/pyams_i18n/language.py:119 +msgid "Latin" +msgstr "" + +#: ./src/pyams_i18n/language.py:120 ./src/pyams_i18n/language.py:377 +msgid "Luxembourgish" +msgstr "" + +#: ./src/pyams_i18n/language.py:121 +msgid "Ganda" +msgstr "" + +#: ./src/pyams_i18n/language.py:122 +msgid "Limburgish" +msgstr "" + +#: ./src/pyams_i18n/language.py:123 +msgid "Lingala" +msgstr "" + +#: ./src/pyams_i18n/language.py:124 ./src/pyams_i18n/language.py:378 +msgid "Lao" +msgstr "" + +#: ./src/pyams_i18n/language.py:125 +msgid "Lithuanian" +msgstr "" + +#: ./src/pyams_i18n/language.py:126 +msgid "Luba-Katanga" +msgstr "" + +#: ./src/pyams_i18n/language.py:127 ./src/pyams_i18n/language.py:380 +msgid "Latvian" +msgstr "" + +#: ./src/pyams_i18n/language.py:128 +msgid "Malagasy" +msgstr "" + +#: ./src/pyams_i18n/language.py:129 +msgid "Marshallese" +msgstr "" + +#: ./src/pyams_i18n/language.py:130 +msgid "Maori" +msgstr "" + +#: ./src/pyams_i18n/language.py:131 ./src/pyams_i18n/language.py:382 +msgid "Macedonian" +msgstr "" + +#: ./src/pyams_i18n/language.py:132 +msgid "Malayalam" +msgstr "" + +#: ./src/pyams_i18n/language.py:133 +msgid "Mongolian" +msgstr "" + +#: ./src/pyams_i18n/language.py:134 +msgid "Moldavian" +msgstr "" + +#: ./src/pyams_i18n/language.py:135 +msgid "Marathi" +msgstr "" + +#: ./src/pyams_i18n/language.py:136 ./src/pyams_i18n/language.py:389 +msgid "Malay" +msgstr "" + +#: ./src/pyams_i18n/language.py:137 ./src/pyams_i18n/language.py:390 +msgid "Maltese" +msgstr "" + +#: ./src/pyams_i18n/language.py:138 +msgid "Burmese" +msgstr "" + +#: ./src/pyams_i18n/language.py:139 +msgid "Nauru" +msgstr "" + +#: ./src/pyams_i18n/language.py:140 +msgid "Norwegian Bokmal" +msgstr "" + +#: ./src/pyams_i18n/language.py:141 +msgid "North Ndebele" +msgstr "" + +#: ./src/pyams_i18n/language.py:142 ./src/pyams_i18n/language.py:394 +msgid "Nepali" +msgstr "" + +#: ./src/pyams_i18n/language.py:143 +msgid "Ndonga" +msgstr "" + +#: ./src/pyams_i18n/language.py:144 +msgid "Dutch" +msgstr "" + +#: ./src/pyams_i18n/language.py:145 +msgid "Norwegian Nynorsk" +msgstr "" + +#: ./src/pyams_i18n/language.py:146 +msgid "Norwegian" +msgstr "" + +#: ./src/pyams_i18n/language.py:147 +msgid "South Ndebele" +msgstr "" + +#: ./src/pyams_i18n/language.py:148 +msgid "Navajo" +msgstr "" + +#: ./src/pyams_i18n/language.py:149 +msgid "Chichewa" +msgstr "" + +#: ./src/pyams_i18n/language.py:150 +msgid "Occitan" +msgstr "" + +#: ./src/pyams_i18n/language.py:151 +msgid "Ojibwa" +msgstr "" + +#: ./src/pyams_i18n/language.py:152 +msgid "Oromo" +msgstr "" + +#: ./src/pyams_i18n/language.py:153 +msgid "Oriya" +msgstr "" + +#: ./src/pyams_i18n/language.py:154 +msgid "Ossetian" +msgstr "" + +#: ./src/pyams_i18n/language.py:155 +msgid "Panjabi" +msgstr "" + +#: ./src/pyams_i18n/language.py:156 +msgid "Pali" +msgstr "" + +#: ./src/pyams_i18n/language.py:157 ./src/pyams_i18n/language.py:400 +msgid "Polish" +msgstr "" + +#: ./src/pyams_i18n/language.py:158 +msgid "Pashto" +msgstr "" + +#: ./src/pyams_i18n/language.py:159 +msgid "Portuguese" +msgstr "" + +#: ./src/pyams_i18n/language.py:160 +msgid "Quechua" +msgstr "" + +#: ./src/pyams_i18n/language.py:161 +msgid "Raeto-Romance" +msgstr "" + +#: ./src/pyams_i18n/language.py:162 +msgid "Kirundi" +msgstr "" + +#: ./src/pyams_i18n/language.py:163 ./src/pyams_i18n/language.py:408 +msgid "Romanian" +msgstr "" + +#: ./src/pyams_i18n/language.py:164 ./src/pyams_i18n/language.py:409 +msgid "Russian" +msgstr "" + +#: ./src/pyams_i18n/language.py:165 +msgid "Kinyarwanda" +msgstr "" + +#: ./src/pyams_i18n/language.py:166 +msgid "Sanskrit" +msgstr "" + +#: ./src/pyams_i18n/language.py:167 +msgid "Sardinian" +msgstr "" + +#: ./src/pyams_i18n/language.py:168 +msgid "Sindhi" +msgstr "" + +#: ./src/pyams_i18n/language.py:169 +msgid "Northern Sami" +msgstr "" + +#: ./src/pyams_i18n/language.py:170 +msgid "Sango" +msgstr "" + +#: ./src/pyams_i18n/language.py:171 +msgid "Sinhalese" +msgstr "" + +#: ./src/pyams_i18n/language.py:172 ./src/pyams_i18n/language.py:417 +msgid "Slovak" +msgstr "" + +#: ./src/pyams_i18n/language.py:173 +msgid "Slovene" +msgstr "" + +#: ./src/pyams_i18n/language.py:174 +msgid "Samoan" +msgstr "" + +#: ./src/pyams_i18n/language.py:175 +msgid "Shona" +msgstr "" + +#: ./src/pyams_i18n/language.py:176 +msgid "Somali" +msgstr "" + +#: ./src/pyams_i18n/language.py:177 ./src/pyams_i18n/language.py:429 +msgid "Albanian" +msgstr "" + +#: ./src/pyams_i18n/language.py:178 +msgid "Serbian" +msgstr "" + +#: ./src/pyams_i18n/language.py:179 +msgid "Swati" +msgstr "" + +#: ./src/pyams_i18n/language.py:180 +msgid "Sotho" +msgstr "" + +#: ./src/pyams_i18n/language.py:181 +msgid "Sundanese" +msgstr "" + +#: ./src/pyams_i18n/language.py:182 +msgid "Swedish" +msgstr "" + +#: ./src/pyams_i18n/language.py:183 +msgid "Swahili" +msgstr "" + +#: ./src/pyams_i18n/language.py:184 +msgid "Tamil" +msgstr "" + +#: ./src/pyams_i18n/language.py:185 +msgid "Telugu" +msgstr "" + +#: ./src/pyams_i18n/language.py:186 +msgid "Tajik" +msgstr "" + +#: ./src/pyams_i18n/language.py:187 +msgid "Thai" +msgstr "" + +#: ./src/pyams_i18n/language.py:188 +msgid "Tigrinya" +msgstr "" + +#: ./src/pyams_i18n/language.py:189 +msgid "Turkmen" +msgstr "" + +#: ./src/pyams_i18n/language.py:190 +msgid "Tagalog" +msgstr "" + +#: ./src/pyams_i18n/language.py:191 +msgid "Tswana" +msgstr "" + +#: ./src/pyams_i18n/language.py:192 +msgid "Tonga" +msgstr "" + +#: ./src/pyams_i18n/language.py:193 ./src/pyams_i18n/language.py:440 +msgid "Turkish" +msgstr "" + +#: ./src/pyams_i18n/language.py:194 +msgid "Tsonga" +msgstr "" + +#: ./src/pyams_i18n/language.py:195 +msgid "Tatar" +msgstr "" + +#: ./src/pyams_i18n/language.py:196 +msgid "Twi" +msgstr "" + +#: ./src/pyams_i18n/language.py:197 +msgid "Tahitian" +msgstr "" + +#: ./src/pyams_i18n/language.py:198 +msgid "Uighur" +msgstr "" + +#: ./src/pyams_i18n/language.py:199 ./src/pyams_i18n/language.py:443 +msgid "Ukrainian" +msgstr "" + +#: ./src/pyams_i18n/language.py:200 +msgid "Urdu" +msgstr "" + +#: ./src/pyams_i18n/language.py:201 +msgid "Uzbek" +msgstr "" + +#: ./src/pyams_i18n/language.py:202 +msgid "Venda" +msgstr "" + +#: ./src/pyams_i18n/language.py:203 ./src/pyams_i18n/language.py:448 +msgid "Vietnamese" +msgstr "" + +#: ./src/pyams_i18n/language.py:204 +msgid "Volapuk" +msgstr "" + +#: ./src/pyams_i18n/language.py:205 +msgid "Walloon" +msgstr "" + +#: ./src/pyams_i18n/language.py:206 +msgid "Wolof" +msgstr "" + +#: ./src/pyams_i18n/language.py:207 +msgid "Xhosa" +msgstr "" + +#: ./src/pyams_i18n/language.py:208 +msgid "Yiddish" +msgstr "" + +#: ./src/pyams_i18n/language.py:209 +msgid "Yoruba" +msgstr "" + +#: ./src/pyams_i18n/language.py:210 +msgid "Zhuang" +msgstr "" + +#: ./src/pyams_i18n/language.py:211 +msgid "Chinese" +msgstr "" + +#: ./src/pyams_i18n/language.py:212 +msgid "Zulu" +msgstr "" + +#: ./src/pyams_i18n/language.py:229 +msgid "Afar (Ethiopia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:231 +msgid "Avestan (Iran)" +msgstr "" + +#: ./src/pyams_i18n/language.py:233 +msgid "Akan (Ghana)" +msgstr "" + +#: ./src/pyams_i18n/language.py:234 +msgid "Amharic (Ethiopia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:235 +msgid "Aragonese (Spain)" +msgstr "" + +#: ./src/pyams_i18n/language.py:236 +msgid "Arabic united Arab Emirates)" +msgstr "" + +#: ./src/pyams_i18n/language.py:237 +msgid "Arabic (Bahrain)" +msgstr "" + +#: ./src/pyams_i18n/language.py:238 +msgid "Arabic (Algeria)" +msgstr "" + +#: ./src/pyams_i18n/language.py:239 +msgid "Arabic (Egypt)" +msgstr "" + +#: ./src/pyams_i18n/language.py:240 +msgid "Arabic (Iraq)" +msgstr "" + +#: ./src/pyams_i18n/language.py:241 +msgid "Arabic (Jordan)" +msgstr "" + +#: ./src/pyams_i18n/language.py:242 +msgid "Arabic (Kuwait)" +msgstr "" + +#: ./src/pyams_i18n/language.py:243 +msgid "Arabic (Lebanon)" +msgstr "" + +#: ./src/pyams_i18n/language.py:244 +msgid "Arabic (Libyan Arab Jamahiriya)" +msgstr "" + +#: ./src/pyams_i18n/language.py:245 +msgid "Arabic (Morocco)" +msgstr "" + +#: ./src/pyams_i18n/language.py:246 +msgid "Arabic (Oman)" +msgstr "" + +#: ./src/pyams_i18n/language.py:247 +msgid "Arabic (Qatar)" +msgstr "" + +#: ./src/pyams_i18n/language.py:248 +msgid "Arabic (Saudi Arabia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:249 +msgid "Arabic (Syrian Arab Republic)" +msgstr "" + +#: ./src/pyams_i18n/language.py:250 +msgid "Arabic (Tunisia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:251 +msgid "Arabic (Yemen)" +msgstr "" + +#: ./src/pyams_i18n/language.py:252 +msgid "Mapudungun (Chile)" +msgstr "" + +#: ./src/pyams_i18n/language.py:253 +msgid "Assamese (India)" +msgstr "" + +#: ./src/pyams_i18n/language.py:254 +msgid "Asturien" +msgstr "" + +#: ./src/pyams_i18n/language.py:255 +msgid "Avaric (Russia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:256 +msgid "Aymara (Bolivia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:257 +msgid "Azerbaijani (Cyrillic)" +msgstr "" + +#: ./src/pyams_i18n/language.py:258 +msgid "Azerbaijani (Latin)" +msgstr "" + +#: ./src/pyams_i18n/language.py:259 +msgid "Bashkir (Russia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:260 +msgid "Belarusian (Belarus)" +msgstr "" + +#: ./src/pyams_i18n/language.py:261 +msgid "Berber (Algeria, Latin)" +msgstr "" + +#: ./src/pyams_i18n/language.py:263 +msgid "Bihari (India)" +msgstr "" + +#: ./src/pyams_i18n/language.py:264 +msgid "Bislama (Vanuatu)" +msgstr "" + +#: ./src/pyams_i18n/language.py:265 +msgid "Bambara (Mali)" +msgstr "" + +#: ./src/pyams_i18n/language.py:266 +msgid "Bengali (India)" +msgstr "" + +#: ./src/pyams_i18n/language.py:267 +msgid "Tibetan (Bhutan)" +msgstr "" + +#: ./src/pyams_i18n/language.py:268 +msgid "Tibetan (China)" +msgstr "" + +#: ./src/pyams_i18n/language.py:270 +msgid "Bosnian (Bosnia Herzegovina, Cyrillic)" +msgstr "" + +#: ./src/pyams_i18n/language.py:271 +msgid "Bosnian (Bosnie Herzegovina, Latin)" +msgstr "" + +#: ./src/pyams_i18n/language.py:272 +msgid "Catalan (Andorra)" +msgstr "" + +#: ./src/pyams_i18n/language.py:273 +msgid "Catalan (Spain)" +msgstr "" + +#: ./src/pyams_i18n/language.py:274 +msgid "Catalan (France)" +msgstr "" + +#: ./src/pyams_i18n/language.py:277 +msgid "Corsican (France)" +msgstr "" + +#: ./src/pyams_i18n/language.py:278 +msgid "Cree (Canada)" +msgstr "" + +#: ./src/pyams_i18n/language.py:280 +msgid "Old Slavonic" +msgstr "" + +#: ./src/pyams_i18n/language.py:281 +msgid "Chuvash (Russia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:284 +msgid "German (Austria)" +msgstr "" + +#: ./src/pyams_i18n/language.py:285 +msgid "German (Swotzerland)" +msgstr "" + +#: ./src/pyams_i18n/language.py:286 +msgid "German (Germany)" +msgstr "" + +#: ./src/pyams_i18n/language.py:287 +msgid "German (Liechtenstein)" +msgstr "" + +#: ./src/pyams_i18n/language.py:288 +msgid "German (Luxembourg)" +msgstr "" + +#: ./src/pyams_i18n/language.py:289 +msgid "Divehi (Maldives)" +msgstr "" + +#: ./src/pyams_i18n/language.py:290 +msgid "Dzongkha (Bhutan)" +msgstr "" + +#: ./src/pyams_i18n/language.py:291 +msgid "Ewe (Ghana)" +msgstr "" + +#: ./src/pyams_i18n/language.py:293 +msgid "English (Australia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:294 +msgid "English (Belize)" +msgstr "" + +#: ./src/pyams_i18n/language.py:295 +msgid "English (Canada)" +msgstr "" + +#: ./src/pyams_i18n/language.py:296 +msgid "English (Caraibes)" +msgstr "" + +#: ./src/pyams_i18n/language.py:297 +msgid "English (United Kingdom)" +msgstr "" + +#: ./src/pyams_i18n/language.py:298 +msgid "English (Ireland)" +msgstr "" + +#: ./src/pyams_i18n/language.py:299 +msgid "English (India)" +msgstr "" + +#: ./src/pyams_i18n/language.py:300 +msgid "English (Jamaica)" +msgstr "" + +#: ./src/pyams_i18n/language.py:301 +msgid "English (Malaysia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:302 +msgid "English (New Zealand)" +msgstr "" + +#: ./src/pyams_i18n/language.py:303 +msgid "English (Philippines)" +msgstr "" + +#: ./src/pyams_i18n/language.py:304 +msgid "English (Singapore)" +msgstr "" + +#: ./src/pyams_i18n/language.py:305 +msgid "English (Trinidad)" +msgstr "" + +#: ./src/pyams_i18n/language.py:306 +msgid "English (United States)" +msgstr "" + +#: ./src/pyams_i18n/language.py:307 +msgid "English (South Africa)" +msgstr "" + +#: ./src/pyams_i18n/language.py:308 +msgid "English (Zimbabwe)" +msgstr "" + +#: ./src/pyams_i18n/language.py:310 +msgid "Spanish (Argentina)" +msgstr "" + +#: ./src/pyams_i18n/language.py:311 +msgid "Spanish (Bolivia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:312 +msgid "Spanish (Chile)" +msgstr "" + +#: ./src/pyams_i18n/language.py:313 +msgid "Spanish (Colombia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:314 +msgid "Spanish (Costa Rica)" +msgstr "" + +#: ./src/pyams_i18n/language.py:315 +msgid "Spanish (Dominican Republic)" +msgstr "" + +#: ./src/pyams_i18n/language.py:316 +msgid "Spanish (Ecuador)" +msgstr "" + +#: ./src/pyams_i18n/language.py:317 +msgid "Spanish (Spain)" +msgstr "" + +#: ./src/pyams_i18n/language.py:318 +msgid "Spanish (Spain, Traditional)" +msgstr "" + +#: ./src/pyams_i18n/language.py:319 +msgid "Spanish (Guatemala)" +msgstr "" + +#: ./src/pyams_i18n/language.py:320 +msgid "Spanish (Honduras)" +msgstr "" + +#: ./src/pyams_i18n/language.py:321 +msgid "Spanish (Mexico)" +msgstr "" + +#: ./src/pyams_i18n/language.py:322 +msgid "Spanish (Nicaragua)" +msgstr "" + +#: ./src/pyams_i18n/language.py:323 +msgid "Spanish (Panama)" +msgstr "" + +#: ./src/pyams_i18n/language.py:324 +msgid "Spanish (Peru)" +msgstr "" + +#: ./src/pyams_i18n/language.py:325 +msgid "Spanish (Puerto Rico)" +msgstr "" + +#: ./src/pyams_i18n/language.py:326 +msgid "Spanish (Paraguay)" +msgstr "" + +#: ./src/pyams_i18n/language.py:327 +msgid "Spanish (El Salvador)" +msgstr "" + +#: ./src/pyams_i18n/language.py:328 +msgid "Spanish (Uruguay)" +msgstr "" + +#: ./src/pyams_i18n/language.py:329 +msgid "Spanish (United States)" +msgstr "" + +#: ./src/pyams_i18n/language.py:330 +msgid "Spanish (Venezuela)" +msgstr "" + +#: ./src/pyams_i18n/language.py:331 +msgid "Estonian (Estonia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:333 +msgid "Persian (Iran)" +msgstr "" + +#: ./src/pyams_i18n/language.py:334 +msgid "Finish" +msgstr "" + +#: ./src/pyams_i18n/language.py:335 +msgid "Philippine" +msgstr "" + +#: ./src/pyams_i18n/language.py:337 +msgid "Faroese (Faroe Islands)" +msgstr "" + +#: ./src/pyams_i18n/language.py:338 +msgid "French (France)" +msgstr "" + +#: ./src/pyams_i18n/language.py:339 +msgid "French (Belgium)" +msgstr "" + +#: ./src/pyams_i18n/language.py:340 +msgid "French (Canada)" +msgstr "" + +#: ./src/pyams_i18n/language.py:341 +msgid "French (Switzerland)" +msgstr "" + +#: ./src/pyams_i18n/language.py:342 +msgid "French (Luxembourg)" +msgstr "" + +#: ./src/pyams_i18n/language.py:343 +msgid "French (Monaco)" +msgstr "" + +#: ./src/pyams_i18n/language.py:344 +msgid "Frioulan (Italia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:345 +msgid "Frisian (Netherlands)" +msgstr "" + +#: ./src/pyams_i18n/language.py:347 +msgid "Dari (Afghanistan)" +msgstr "" + +#: ./src/pyams_i18n/language.py:348 +msgid "Gaelic (Scotland)" +msgstr "" + +#: ./src/pyams_i18n/language.py:350 +msgid "Alsatian (France)" +msgstr "" + +#: ./src/pyams_i18n/language.py:351 +msgid "Gujarati (India)" +msgstr "" + +#: ./src/pyams_i18n/language.py:352 +msgid "Hausa (Nigeria)" +msgstr "" + +#: ./src/pyams_i18n/language.py:353 +msgid "Hebrew (Israel)" +msgstr "" + +#: ./src/pyams_i18n/language.py:354 +msgid "Hindi (Inde)" +msgstr "" + +#: ./src/pyams_i18n/language.py:355 +msgid "Croatian (Bosnia Herzegovina, Latin)" +msgstr "" + +#: ./src/pyams_i18n/language.py:356 +msgid "Croatian (Croatia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:358 +msgid "Armenian (Armenia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:360 +msgid "Yi (China)" +msgstr "" + +#: ./src/pyams_i18n/language.py:361 +msgid "Inuktitut (Canada, Syllabic)" +msgstr "" + +#: ./src/pyams_i18n/language.py:362 +msgid "Inuktitut (Canada, Latin)" +msgstr "" + +#: ./src/pyams_i18n/language.py:364 +msgid "Italian (Switzerland)" +msgstr "" + +#: ./src/pyams_i18n/language.py:365 +msgid "Italian (Italia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:367 +msgid "Japanese (Japan, Mac)" +msgstr "" + +#: ./src/pyams_i18n/language.py:369 +msgid "Kazakh (Kazakhstan)" +msgstr "" + +#: ./src/pyams_i18n/language.py:370 +msgid "Greenlandic" +msgstr "" + +#: ./src/pyams_i18n/language.py:371 +msgid "Khmer (Cambodia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:372 +msgid "Kannada (India)" +msgstr "" + +#: ./src/pyams_i18n/language.py:373 +msgid "Korean (Korea)" +msgstr "" + +#: ./src/pyams_i18n/language.py:374 +msgid "Konkani (India)" +msgstr "" + +#: ./src/pyams_i18n/language.py:376 +msgid "Kirghiz (Kyrgizstan)" +msgstr "" + +#: ./src/pyams_i18n/language.py:379 +msgid "Lituanian" +msgstr "" + +#: ./src/pyams_i18n/language.py:381 +msgid "Maori (New Zealand)" +msgstr "" + +#: ./src/pyams_i18n/language.py:383 +msgid "Malayalam (Inde)" +msgstr "" + +#: ./src/pyams_i18n/language.py:384 +msgid "Mongolian (China)" +msgstr "" + +#: ./src/pyams_i18n/language.py:385 +msgid "Mongolian (Mongolia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:386 +msgid "Mohawk (Canada)" +msgstr "" + +#: ./src/pyams_i18n/language.py:387 +msgid "Marathi (Inde)" +msgstr "" + +#: ./src/pyams_i18n/language.py:388 +msgid "Malay (Brunei)" +msgstr "" + +#: ./src/pyams_i18n/language.py:391 +msgid "Burmese (Myanmar)" +msgstr "" + +#: ./src/pyams_i18n/language.py:392 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: ./src/pyams_i18n/language.py:393 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: ./src/pyams_i18n/language.py:395 +msgid "Dutch (Belgium)" +msgstr "" + +#: ./src/pyams_i18n/language.py:396 +msgid "Dutch (Netherlands)" +msgstr "" + +#: ./src/pyams_i18n/language.py:397 +msgid "Occitan (France)" +msgstr "" + +#: ./src/pyams_i18n/language.py:398 +msgid "Oriya (India)" +msgstr "" + +#: ./src/pyams_i18n/language.py:399 +msgid "Punjabi (India)" +msgstr "" + +#: ./src/pyams_i18n/language.py:401 +msgid "Pachto (Afghanistan)" +msgstr "" + +#: ./src/pyams_i18n/language.py:402 +msgid "Portuguese (Brazil)" +msgstr "" + +#: ./src/pyams_i18n/language.py:403 +msgid "Portuguese (Portugal)" +msgstr "" + +#: ./src/pyams_i18n/language.py:404 +msgid "Quechua (Bolivia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:405 +msgid "Quechua (Ecuador)" +msgstr "" + +#: ./src/pyams_i18n/language.py:406 +msgid "Quechua (Peru)" +msgstr "" + +#: ./src/pyams_i18n/language.py:407 +msgid "Romansh" +msgstr "" + +#: ./src/pyams_i18n/language.py:410 +msgid "Kinyarwanda (Rwanda)" +msgstr "" + +#: ./src/pyams_i18n/language.py:411 +msgid "Sanskrit (Inde)" +msgstr "" + +#: ./src/pyams_i18n/language.py:412 +msgid "Yakut (Russia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:413 +msgid "Sami (Northern, Finland)" +msgstr "" + +#: ./src/pyams_i18n/language.py:414 +msgid "Sami (Northern, Norway)" +msgstr "" + +#: ./src/pyams_i18n/language.py:415 +msgid "Sami (Northern, Sweden)" +msgstr "" + +#: ./src/pyams_i18n/language.py:416 +msgid "Sinhala (Sri Lanka)" +msgstr "" + +#: ./src/pyams_i18n/language.py:418 +msgid "Slovenian" +msgstr "" + +#: ./src/pyams_i18n/language.py:419 +msgid "Serbian (Bosnia Herzegovina, Cyrillic)" +msgstr "" + +#: ./src/pyams_i18n/language.py:420 +msgid "Serbian (Bosnia Herzegovina, Latin)" +msgstr "" + +#: ./src/pyams_i18n/language.py:421 +msgid "Serbian (Serbia and Montenegro, Cyrillic)" +msgstr "" + +#: ./src/pyams_i18n/language.py:422 +msgid "Serbian (Serbia and Montenegro, Latin)" +msgstr "" + +#: ./src/pyams_i18n/language.py:423 +msgid "Sami (Southern, Norway)" +msgstr "" + +#: ./src/pyams_i18n/language.py:424 +msgid "Sami (Southern, Sweden)" +msgstr "" + +#: ./src/pyams_i18n/language.py:425 +msgid "Sami (Lule, Norway)" +msgstr "" + +#: ./src/pyams_i18n/language.py:426 +msgid "Sami (Lule, Sweden)" +msgstr "" + +#: ./src/pyams_i18n/language.py:427 +msgid "Sami (Inari, Finland)" +msgstr "" + +#: ./src/pyams_i18n/language.py:428 +msgid "Sami (Skolt, Finland)" +msgstr "" + +#: ./src/pyams_i18n/language.py:430 +msgid "Swedish (Finland)" +msgstr "" + +#: ./src/pyams_i18n/language.py:431 +msgid "Swedish (Sweden)" +msgstr "" + +#: ./src/pyams_i18n/language.py:432 +msgid "Swahili (Kenya)" +msgstr "" + +#: ./src/pyams_i18n/language.py:433 +msgid "Syriac" +msgstr "" + +#: ./src/pyams_i18n/language.py:434 +msgid "Tamil (India)" +msgstr "" + +#: ./src/pyams_i18n/language.py:435 +msgid "Telugu (India)" +msgstr "" + +#: ./src/pyams_i18n/language.py:436 +msgid "Tajik (Tajikistan)" +msgstr "" + +#: ./src/pyams_i18n/language.py:437 +msgid "Thai (Thailand)" +msgstr "" + +#: ./src/pyams_i18n/language.py:438 +msgid "Turkmen (Turkmenistan)" +msgstr "" + +#: ./src/pyams_i18n/language.py:439 +msgid "Tswana (South Africa)" +msgstr "" + +#: ./src/pyams_i18n/language.py:441 +msgid "Tatar (Russia)" +msgstr "" + +#: ./src/pyams_i18n/language.py:442 +msgid "Uighur (China)" +msgstr "" + +#: ./src/pyams_i18n/language.py:444 +msgid "Urdu (Inde)" +msgstr "" + +#: ./src/pyams_i18n/language.py:445 +msgid "Urdu (Pakistan)" +msgstr "" + +#: ./src/pyams_i18n/language.py:446 +msgid "Uzbek uzbekistan, Cyrillic)" +msgstr "" + +#: ./src/pyams_i18n/language.py:447 +msgid "Uzbek uzbekistan, Latin)" +msgstr "" + +#: ./src/pyams_i18n/language.py:449 +msgid "Sorbian (Germany)" +msgstr "" + +#: ./src/pyams_i18n/language.py:450 +msgid "Wolof (Senegal)" +msgstr "" + +#: ./src/pyams_i18n/language.py:451 +msgid "Xhosa (South Africa)" +msgstr "" + +#: ./src/pyams_i18n/language.py:452 +msgid "Yoruba (Nigeria)" +msgstr "" + +#: ./src/pyams_i18n/language.py:453 +msgid "Chinese (Simplified)" +msgstr "" + +#: ./src/pyams_i18n/language.py:454 +msgid "Chinese (Traditional)" +msgstr "" + +#: ./src/pyams_i18n/language.py:455 +msgid "Chinese (China)" +msgstr "" + +#: ./src/pyams_i18n/language.py:456 +msgid "Chinese (Hong Kong, China)" +msgstr "" + +#: ./src/pyams_i18n/language.py:457 +msgid "Chinese (Macao)" +msgstr "" + +#: ./src/pyams_i18n/language.py:458 +msgid "Chinese (Singapore)" +msgstr "" + +#: ./src/pyams_i18n/language.py:459 +msgid "Chinese (Taiwan)" +msgstr "" + +#: ./src/pyams_i18n/language.py:460 +msgid "Zulu (South Africa)" +msgstr "" + +#: ./src/pyams_i18n/zmi/negotiator.py:37 +msgid "Update languages negotiator properties" +msgstr "" + +#: ./src/pyams_i18n/interfaces/__init__.py:41 +msgid "Language lookup policy" +msgstr "" + +#: ./src/pyams_i18n/interfaces/__init__.py:42 +msgid "Defines how the language lookup is working." +msgstr "" + +#: ./src/pyams_i18n/interfaces/__init__.py:47 +msgid "Server language" +msgstr "" + +#: ./src/pyams_i18n/interfaces/__init__.py:48 +msgid "The language used for server policy." +msgstr "" + +#: ./src/pyams_i18n/interfaces/__init__.py:53 +msgid "Offered languages" +msgstr "" + +#: ./src/pyams_i18n/interfaces/__init__.py:54 +msgid "" +"A list of offered languages. Can be used to user select languages which are " +"offered in a skin." +msgstr "" + +#: ./src/pyams_i18n/interfaces/__init__.py:61 +msgid "Language caching enabled" +msgstr "" + +#: ./src/pyams_i18n/interfaces/__init__.py:62 +msgid "Language caching enabled (per request)" +msgstr "" + +#: ./src/pyams_i18n/interfaces/__init__.py:68 +msgid "Unsupported language policy" +msgstr "" diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/negotiator.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n/negotiator.py Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,102 @@ +# +# Copyright (c) 2008-2015 Thierry Florac +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# + +__docformat__ = 'restructuredtext' + +# import standard library + +# import interfaces +from pyams_i18n.interfaces import INegotiator, LANGUAGE_CACHE_KEY +from zope.i18n.interfaces import INegotiator as IZopeNegotiator + +# import packages +from pyams_utils.i18n import get_browser_language +from pyams_utils.registry import query_utility, utility_config +from persistent import Persistent +from zope.container.contained import Contained +from zope.i18n.locales import locales +from zope.interface import implementer +from zope.schema.fieldproperty import FieldProperty + + +@implementer(INegotiator) +class Negotiator(Persistent, Contained): + """Language negotiator utility""" + + policy = FieldProperty(INegotiator['policy']) + server_language = FieldProperty(INegotiator['server_language']) + offered_languages = FieldProperty(INegotiator['offered_languages']) + cache_enabled = FieldProperty(INegotiator['cache_enabled']) + + def get_language(self, request): + """See :intf:`INegotiator`""" + policies = self.policy.split(' --> ') + for policy in policies: + + # check server policy + if policy == 'server': + if self.server_language: + return self.server_language + + # check session policy + elif policy == 'session': + if self.cache_enabled: + try: + cached = request.annotations[LANGUAGE_CACHE_KEY] + return cached + except KeyError: + session = request.session + lang = session.get('language') + if lang is not None: + request.annotations[LANGUAGE_CACHE_KEY] = lang + return lang + else: + session = request.session + lang = session.get('language') + if lang is not None: + return lang + + # check browser policy + elif policy == 'browser': + lang = get_browser_language(request) + if lang is not None: + return lang + + return None + + def clear_cache(self, request): + """Clear cached language value""" + try: + del request.annotations[LANGUAGE_CACHE_KEY] + except KeyError: + pass + + +def locale_negotiator(request): + """Negotiate language based on server, browser and user settings""" + negotiator = query_utility(INegotiator) + if negotiator is not None: + return negotiator.get_language(request) + return get_browser_language(request) + + +def get_locale(request): + """Get zope.i18n locale attribute""" + return locales.getLocale(request.locale_name) + + +@utility_config(provides=IZopeNegotiator) +class ZopeNegotiator(object): + """Zope language negotiator""" + + def getLanguage(self, langs, env): + return locale_negotiator(env) diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/aa_ET.png Binary file src/pyams_i18n/resources/img/flags/aa_ET.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ab_GE.png Binary file src/pyams_i18n/resources/img/flags/ab_GE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ae_IR.png Binary file src/pyams_i18n/resources/img/flags/ae_IR.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/af_ZA.png Binary file src/pyams_i18n/resources/img/flags/af_ZA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ak_GH.png Binary file src/pyams_i18n/resources/img/flags/ak_GH.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/am_ET.png Binary file src/pyams_i18n/resources/img/flags/am_ET.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/an_ES.png Binary file src/pyams_i18n/resources/img/flags/an_ES.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ar.png Binary file src/pyams_i18n/resources/img/flags/ar.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ar_AE.png Binary file src/pyams_i18n/resources/img/flags/ar_AE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ar_BH.png Binary file src/pyams_i18n/resources/img/flags/ar_BH.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ar_DZ.png Binary file src/pyams_i18n/resources/img/flags/ar_DZ.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ar_EG.png Binary file src/pyams_i18n/resources/img/flags/ar_EG.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ar_IQ.png Binary file src/pyams_i18n/resources/img/flags/ar_IQ.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ar_JO.png Binary file src/pyams_i18n/resources/img/flags/ar_JO.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ar_KW.png Binary file src/pyams_i18n/resources/img/flags/ar_KW.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ar_LB.png Binary file src/pyams_i18n/resources/img/flags/ar_LB.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ar_LY.png Binary file src/pyams_i18n/resources/img/flags/ar_LY.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ar_MA.png Binary file src/pyams_i18n/resources/img/flags/ar_MA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ar_OM.png Binary file src/pyams_i18n/resources/img/flags/ar_OM.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ar_QA.png Binary file src/pyams_i18n/resources/img/flags/ar_QA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ar_SA.png Binary file src/pyams_i18n/resources/img/flags/ar_SA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ar_SY.png Binary file src/pyams_i18n/resources/img/flags/ar_SY.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ar_TN.png Binary file src/pyams_i18n/resources/img/flags/ar_TN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ar_YE.png Binary file src/pyams_i18n/resources/img/flags/ar_YE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/arn_CL.png Binary file src/pyams_i18n/resources/img/flags/arn_CL.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/as_IN.png Binary file src/pyams_i18n/resources/img/flags/as_IN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ast_ES.png Binary file src/pyams_i18n/resources/img/flags/ast_ES.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/av_RU.png Binary file src/pyams_i18n/resources/img/flags/av_RU.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ay_BO.png Binary file src/pyams_i18n/resources/img/flags/ay_BO.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/az_AZ-Cyrl.png Binary file src/pyams_i18n/resources/img/flags/az_AZ-Cyrl.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/az_AZ-Latn.png Binary file src/pyams_i18n/resources/img/flags/az_AZ-Latn.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ba_RU.png Binary file src/pyams_i18n/resources/img/flags/ba_RU.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/be.png Binary file src/pyams_i18n/resources/img/flags/be.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/be_BY.png Binary file src/pyams_i18n/resources/img/flags/be_BY.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ber_DZ.png Binary file src/pyams_i18n/resources/img/flags/ber_DZ.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/bg.png Binary file src/pyams_i18n/resources/img/flags/bg.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/bg_BG.png Binary file src/pyams_i18n/resources/img/flags/bg_BG.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/bh_IN.png Binary file src/pyams_i18n/resources/img/flags/bh_IN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/bi_VU.png Binary file src/pyams_i18n/resources/img/flags/bi_VU.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/bm_ML.png Binary file src/pyams_i18n/resources/img/flags/bm_ML.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/bn_IN.png Binary file src/pyams_i18n/resources/img/flags/bn_IN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/bo_BT.png Binary file src/pyams_i18n/resources/img/flags/bo_BT.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/bo_CN.png Binary file src/pyams_i18n/resources/img/flags/bo_CN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/br_FR.png Binary file src/pyams_i18n/resources/img/flags/br_FR.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/bs_BA-Cyrl.png Binary file src/pyams_i18n/resources/img/flags/bs_BA-Cyrl.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/bs_BA-Latn.png Binary file src/pyams_i18n/resources/img/flags/bs_BA-Latn.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ca_AD.png Binary file src/pyams_i18n/resources/img/flags/ca_AD.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ca_ES.png Binary file src/pyams_i18n/resources/img/flags/ca_ES.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ca_FR.png Binary file src/pyams_i18n/resources/img/flags/ca_FR.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ce_RU.png Binary file src/pyams_i18n/resources/img/flags/ce_RU.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ch_US.png Binary file src/pyams_i18n/resources/img/flags/ch_US.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/co_FR.png Binary file src/pyams_i18n/resources/img/flags/co_FR.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/cr_CA.png Binary file src/pyams_i18n/resources/img/flags/cr_CA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/cs_CZ.png Binary file src/pyams_i18n/resources/img/flags/cs_CZ.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/cu_BG.png Binary file src/pyams_i18n/resources/img/flags/cu_BG.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/cv_RU.png Binary file src/pyams_i18n/resources/img/flags/cv_RU.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/cy_GB.png Binary file src/pyams_i18n/resources/img/flags/cy_GB.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/da_DK.png Binary file src/pyams_i18n/resources/img/flags/da_DK.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/de.png Binary file src/pyams_i18n/resources/img/flags/de.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/de_AT.png Binary file src/pyams_i18n/resources/img/flags/de_AT.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/de_CH.png Binary file src/pyams_i18n/resources/img/flags/de_CH.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/de_DE.png Binary file src/pyams_i18n/resources/img/flags/de_DE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/de_LI.png Binary file src/pyams_i18n/resources/img/flags/de_LI.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/de_LU.png Binary file src/pyams_i18n/resources/img/flags/de_LU.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/dv_MV.png Binary file src/pyams_i18n/resources/img/flags/dv_MV.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/dz_BT.png Binary file src/pyams_i18n/resources/img/flags/dz_BT.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ee_GH.png Binary file src/pyams_i18n/resources/img/flags/ee_GH.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/el_GR.png Binary file src/pyams_i18n/resources/img/flags/el_GR.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/en.png Binary file src/pyams_i18n/resources/img/flags/en.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/en_AU.png Binary file src/pyams_i18n/resources/img/flags/en_AU.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/en_BZ.png Binary file src/pyams_i18n/resources/img/flags/en_BZ.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/en_CA.png Binary file src/pyams_i18n/resources/img/flags/en_CA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/en_GB.png Binary file src/pyams_i18n/resources/img/flags/en_GB.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/en_IE.png Binary file src/pyams_i18n/resources/img/flags/en_IE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/en_IN.png Binary file src/pyams_i18n/resources/img/flags/en_IN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/en_JA.png Binary file src/pyams_i18n/resources/img/flags/en_JA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/en_MY.png Binary file src/pyams_i18n/resources/img/flags/en_MY.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/en_NZ.png Binary file src/pyams_i18n/resources/img/flags/en_NZ.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/en_PH.png Binary file src/pyams_i18n/resources/img/flags/en_PH.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/en_SG.png Binary file src/pyams_i18n/resources/img/flags/en_SG.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/en_TT.png Binary file src/pyams_i18n/resources/img/flags/en_TT.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/en_US.png Binary file src/pyams_i18n/resources/img/flags/en_US.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/en_ZA.png Binary file src/pyams_i18n/resources/img/flags/en_ZA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/en_ZW.png Binary file src/pyams_i18n/resources/img/flags/en_ZW.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es.png Binary file src/pyams_i18n/resources/img/flags/es.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_AR.png Binary file src/pyams_i18n/resources/img/flags/es_AR.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_BO.png Binary file src/pyams_i18n/resources/img/flags/es_BO.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_CL.png Binary file src/pyams_i18n/resources/img/flags/es_CL.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_CO.png Binary file src/pyams_i18n/resources/img/flags/es_CO.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_CR.png Binary file src/pyams_i18n/resources/img/flags/es_CR.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_DO.png Binary file src/pyams_i18n/resources/img/flags/es_DO.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_EC.png Binary file src/pyams_i18n/resources/img/flags/es_EC.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_ES-ts.png Binary file src/pyams_i18n/resources/img/flags/es_ES-ts.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_ES.png Binary file src/pyams_i18n/resources/img/flags/es_ES.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_GT.png Binary file src/pyams_i18n/resources/img/flags/es_GT.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_HN.png Binary file src/pyams_i18n/resources/img/flags/es_HN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_MX.png Binary file src/pyams_i18n/resources/img/flags/es_MX.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_NI.png Binary file src/pyams_i18n/resources/img/flags/es_NI.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_PA.png Binary file src/pyams_i18n/resources/img/flags/es_PA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_PE.png Binary file src/pyams_i18n/resources/img/flags/es_PE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_PR.png Binary file src/pyams_i18n/resources/img/flags/es_PR.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_PY.png Binary file src/pyams_i18n/resources/img/flags/es_PY.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_SV.png Binary file src/pyams_i18n/resources/img/flags/es_SV.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_UR.png Binary file src/pyams_i18n/resources/img/flags/es_UR.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_US.png Binary file src/pyams_i18n/resources/img/flags/es_US.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/es_VE.png Binary file src/pyams_i18n/resources/img/flags/es_VE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/et_EE.png Binary file src/pyams_i18n/resources/img/flags/et_EE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/eu_ES.png Binary file src/pyams_i18n/resources/img/flags/eu_ES.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/fa_IR.png Binary file src/pyams_i18n/resources/img/flags/fa_IR.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/fi.png Binary file src/pyams_i18n/resources/img/flags/fi.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/fi_FI.png Binary file src/pyams_i18n/resources/img/flags/fi_FI.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/fil_PH.png Binary file src/pyams_i18n/resources/img/flags/fil_PH.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/fj_FJ.png --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n/resources/img/flags/fj_FJ.png Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,1 @@ +Résultats Google Recherche d'images correspondant à http://www.silber.de/bilder/icon/flag/fiji.png
Afficher l'image d'origine

Afficher l'image d'origine

16 x 11 - 1 ko - png - www.silber.de/bilder/icon/flag/fiji.png

L'image peut être soumise à des droits d'auteur.

Voici l'image dans son contexte, sur la page : www.silber.de/anlage_banken.html

\ No newline at end of file diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/fo.png Binary file src/pyams_i18n/resources/img/flags/fo.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/fo_FO.png Binary file src/pyams_i18n/resources/img/flags/fo_FO.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/fr.png Binary file src/pyams_i18n/resources/img/flags/fr.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/fr_BE.png Binary file src/pyams_i18n/resources/img/flags/fr_BE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/fr_CA.png Binary file src/pyams_i18n/resources/img/flags/fr_CA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/fr_CH.png Binary file src/pyams_i18n/resources/img/flags/fr_CH.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/fr_FR.png Binary file src/pyams_i18n/resources/img/flags/fr_FR.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/fr_LU.png Binary file src/pyams_i18n/resources/img/flags/fr_LU.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/fr_MC.png Binary file src/pyams_i18n/resources/img/flags/fr_MC.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/fy_NL.png Binary file src/pyams_i18n/resources/img/flags/fy_NL.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ga_IE.png Binary file src/pyams_i18n/resources/img/flags/ga_IE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/gbz_AF.png Binary file src/pyams_i18n/resources/img/flags/gbz_AF.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/gd_GB.png Binary file src/pyams_i18n/resources/img/flags/gd_GB.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/gl_ES.png Binary file src/pyams_i18n/resources/img/flags/gl_ES.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/gsw_FR.png Binary file src/pyams_i18n/resources/img/flags/gsw_FR.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/gu_IN.png Binary file src/pyams_i18n/resources/img/flags/gu_IN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ha_NG-Latn.png Binary file src/pyams_i18n/resources/img/flags/ha_NG-Latn.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/he_IL.png Binary file src/pyams_i18n/resources/img/flags/he_IL.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/hi_IN.png Binary file src/pyams_i18n/resources/img/flags/hi_IN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/hr_BA.png Binary file src/pyams_i18n/resources/img/flags/hr_BA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/hr_HR.png Binary file src/pyams_i18n/resources/img/flags/hr_HR.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/hu.png Binary file src/pyams_i18n/resources/img/flags/hu.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/hu_HU.png Binary file src/pyams_i18n/resources/img/flags/hu_HU.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/hy_AM.png Binary file src/pyams_i18n/resources/img/flags/hy_AM.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/id_ID.png Binary file src/pyams_i18n/resources/img/flags/id_ID.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ii_CN.png Binary file src/pyams_i18n/resources/img/flags/ii_CN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/is.png Binary file src/pyams_i18n/resources/img/flags/is.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/is_IS.png Binary file src/pyams_i18n/resources/img/flags/is_IS.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/it.png Binary file src/pyams_i18n/resources/img/flags/it.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/it_CH.png Binary file src/pyams_i18n/resources/img/flags/it_CH.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/it_IT.png Binary file src/pyams_i18n/resources/img/flags/it_IT.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/iu_CA-Cans.png Binary file src/pyams_i18n/resources/img/flags/iu_CA-Cans.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/iu_CA-Latn.png Binary file src/pyams_i18n/resources/img/flags/iu_CA-Latn.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ja.png Binary file src/pyams_i18n/resources/img/flags/ja.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ja_JP-mac.png Binary file src/pyams_i18n/resources/img/flags/ja_JP-mac.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ja_JP.png Binary file src/pyams_i18n/resources/img/flags/ja_JP.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ka_GE.png Binary file src/pyams_i18n/resources/img/flags/ka_GE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/kh.png Binary file src/pyams_i18n/resources/img/flags/kh.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/kh_KH.png Binary file src/pyams_i18n/resources/img/flags/kh_KH.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/kk_KZ.png Binary file src/pyams_i18n/resources/img/flags/kk_KZ.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/kl_GL.png Binary file src/pyams_i18n/resources/img/flags/kl_GL.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/km_KH.png Binary file src/pyams_i18n/resources/img/flags/km_KH.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/kn_IN.png Binary file src/pyams_i18n/resources/img/flags/kn_IN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ko.png Binary file src/pyams_i18n/resources/img/flags/ko.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ko_KR.png Binary file src/pyams_i18n/resources/img/flags/ko_KR.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/kok_IN.png Binary file src/pyams_i18n/resources/img/flags/kok_IN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/kw_GB.png Binary file src/pyams_i18n/resources/img/flags/kw_GB.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ky_KG.png Binary file src/pyams_i18n/resources/img/flags/ky_KG.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/lb_LU.png Binary file src/pyams_i18n/resources/img/flags/lb_LU.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/lo_LA.png Binary file src/pyams_i18n/resources/img/flags/lo_LA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/lt.png Binary file src/pyams_i18n/resources/img/flags/lt.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/lt_LT.png Binary file src/pyams_i18n/resources/img/flags/lt_LT.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/lv.png Binary file src/pyams_i18n/resources/img/flags/lv.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/lv_LV.png Binary file src/pyams_i18n/resources/img/flags/lv_LV.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/mi_NZ.png Binary file src/pyams_i18n/resources/img/flags/mi_NZ.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/mk_MK.png Binary file src/pyams_i18n/resources/img/flags/mk_MK.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ml_IN.png Binary file src/pyams_i18n/resources/img/flags/ml_IN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/mn_CN.png Binary file src/pyams_i18n/resources/img/flags/mn_CN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/mn_MN.png Binary file src/pyams_i18n/resources/img/flags/mn_MN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/moh_CA.png Binary file src/pyams_i18n/resources/img/flags/moh_CA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/mr_IN.png Binary file src/pyams_i18n/resources/img/flags/mr_IN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ms_BN.png Binary file src/pyams_i18n/resources/img/flags/ms_BN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ms_MY.png Binary file src/pyams_i18n/resources/img/flags/ms_MY.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/mt.png Binary file src/pyams_i18n/resources/img/flags/mt.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/mt_MT.png Binary file src/pyams_i18n/resources/img/flags/mt_MT.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/my_MM.png Binary file src/pyams_i18n/resources/img/flags/my_MM.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/nb_NO.png Binary file src/pyams_i18n/resources/img/flags/nb_NO.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ne_NP.png Binary file src/pyams_i18n/resources/img/flags/ne_NP.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/nl_BE.png Binary file src/pyams_i18n/resources/img/flags/nl_BE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/nl_NL.png Binary file src/pyams_i18n/resources/img/flags/nl_NL.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/nn_NO.png Binary file src/pyams_i18n/resources/img/flags/nn_NO.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ns_ZA.png Binary file src/pyams_i18n/resources/img/flags/ns_ZA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/oc_FR.png Binary file src/pyams_i18n/resources/img/flags/oc_FR.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/or_IN.png Binary file src/pyams_i18n/resources/img/flags/or_IN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/other.png Binary file src/pyams_i18n/resources/img/flags/other.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/pa_IN.png Binary file src/pyams_i18n/resources/img/flags/pa_IN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/pl.png Binary file src/pyams_i18n/resources/img/flags/pl.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/pl_PL.png Binary file src/pyams_i18n/resources/img/flags/pl_PL.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ps_AF.png Binary file src/pyams_i18n/resources/img/flags/ps_AF.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/pt.png Binary file src/pyams_i18n/resources/img/flags/pt.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/pt_BR.png Binary file src/pyams_i18n/resources/img/flags/pt_BR.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/pt_PT.png Binary file src/pyams_i18n/resources/img/flags/pt_PT.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/que_BO.png Binary file src/pyams_i18n/resources/img/flags/que_BO.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/que_EC.png Binary file src/pyams_i18n/resources/img/flags/que_EC.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/que_PE.png Binary file src/pyams_i18n/resources/img/flags/que_PE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/qut_GT.png Binary file src/pyams_i18n/resources/img/flags/qut_GT.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/rm_CH.png Binary file src/pyams_i18n/resources/img/flags/rm_CH.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ro.png Binary file src/pyams_i18n/resources/img/flags/ro.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ro_RO.png Binary file src/pyams_i18n/resources/img/flags/ro_RO.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ru.png Binary file src/pyams_i18n/resources/img/flags/ru.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ru_RU.png Binary file src/pyams_i18n/resources/img/flags/ru_RU.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/rw_RW.png Binary file src/pyams_i18n/resources/img/flags/rw_RW.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/sa_IN.png Binary file src/pyams_i18n/resources/img/flags/sa_IN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/sah_RU.png Binary file src/pyams_i18n/resources/img/flags/sah_RU.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/se.png Binary file src/pyams_i18n/resources/img/flags/se.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/se_FI.png Binary file src/pyams_i18n/resources/img/flags/se_FI.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/se_NO.png Binary file src/pyams_i18n/resources/img/flags/se_NO.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/se_SE.png Binary file src/pyams_i18n/resources/img/flags/se_SE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/si_LK.png Binary file src/pyams_i18n/resources/img/flags/si_LK.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/sk.png Binary file src/pyams_i18n/resources/img/flags/sk.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/sk_SK.png Binary file src/pyams_i18n/resources/img/flags/sk_SK.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/sl_SI.png Binary file src/pyams_i18n/resources/img/flags/sl_SI.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/sma_NO.png Binary file src/pyams_i18n/resources/img/flags/sma_NO.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/sma_SE.png Binary file src/pyams_i18n/resources/img/flags/sma_SE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/smj_NO.png Binary file src/pyams_i18n/resources/img/flags/smj_NO.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/smj_SE.png Binary file src/pyams_i18n/resources/img/flags/smj_SE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/smn_FI.png Binary file src/pyams_i18n/resources/img/flags/smn_FI.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/sms_FI.png Binary file src/pyams_i18n/resources/img/flags/sms_FI.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/sq_AL.png Binary file src/pyams_i18n/resources/img/flags/sq_AL.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/sr_BA-Cyrl.png Binary file src/pyams_i18n/resources/img/flags/sr_BA-Cyrl.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/sr_BA-Latn.png Binary file src/pyams_i18n/resources/img/flags/sr_BA-Latn.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/sr_SP-Cyrl.png Binary file src/pyams_i18n/resources/img/flags/sr_SP-Cyrl.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/sr_SP-Latn.png Binary file src/pyams_i18n/resources/img/flags/sr_SP-Latn.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/sv_FI.png Binary file src/pyams_i18n/resources/img/flags/sv_FI.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/sv_SE.png Binary file src/pyams_i18n/resources/img/flags/sv_SE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/sw_KE.png Binary file src/pyams_i18n/resources/img/flags/sw_KE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/syr_SY.png Binary file src/pyams_i18n/resources/img/flags/syr_SY.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ta_IN.png Binary file src/pyams_i18n/resources/img/flags/ta_IN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/te_IN.png Binary file src/pyams_i18n/resources/img/flags/te_IN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/tg_TJ-Cyrl.png Binary file src/pyams_i18n/resources/img/flags/tg_TJ-Cyrl.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/th_TH.png Binary file src/pyams_i18n/resources/img/flags/th_TH.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/tk_TM.png Binary file src/pyams_i18n/resources/img/flags/tk_TM.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/tn_ZA.png Binary file src/pyams_i18n/resources/img/flags/tn_ZA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/tr_TR.png Binary file src/pyams_i18n/resources/img/flags/tr_TR.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/tt_RU.png Binary file src/pyams_i18n/resources/img/flags/tt_RU.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ug_CN.png Binary file src/pyams_i18n/resources/img/flags/ug_CN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/uk_UA.png Binary file src/pyams_i18n/resources/img/flags/uk_UA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ur_IN.png Binary file src/pyams_i18n/resources/img/flags/ur_IN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/ur_PK.png Binary file src/pyams_i18n/resources/img/flags/ur_PK.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/uz_UZ-Cyrl.png Binary file src/pyams_i18n/resources/img/flags/uz_UZ-Cyrl.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/uz_UZ-Latn.png Binary file src/pyams_i18n/resources/img/flags/uz_UZ-Latn.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/vi_VN.png Binary file src/pyams_i18n/resources/img/flags/vi_VN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/wee_DE.png Binary file src/pyams_i18n/resources/img/flags/wee_DE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/wen_DE.png Binary file src/pyams_i18n/resources/img/flags/wen_DE.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/wo_SN.png Binary file src/pyams_i18n/resources/img/flags/wo_SN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/xh_ZA.png Binary file src/pyams_i18n/resources/img/flags/xh_ZA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/yo_NG.png Binary file src/pyams_i18n/resources/img/flags/yo_NG.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/zh_CN.png Binary file src/pyams_i18n/resources/img/flags/zh_CN.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/zh_HK.png Binary file src/pyams_i18n/resources/img/flags/zh_HK.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/zh_MO.png Binary file src/pyams_i18n/resources/img/flags/zh_MO.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/zh_SG.png Binary file src/pyams_i18n/resources/img/flags/zh_SG.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/zh_TW.png Binary file src/pyams_i18n/resources/img/flags/zh_TW.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/resources/img/flags/zu_ZA.png Binary file src/pyams_i18n/resources/img/flags/zu_ZA.png has changed diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/site.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n/site.py Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,48 @@ +# +# Copyright (c) 2008-2015 Thierry Florac +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# + +__docformat__ = 'restructuredtext' + + +# import standard library + +# import interfaces +from pyams_i18n.interfaces import INegotiator +from pyams_utils.interfaces.site import ISiteGenerations +from zope.site.interfaces import INewLocalSite + +# import packages +from pyams_i18n.negotiator import Negotiator +from pyams_utils.registry import utility_config +from pyams_utils.site import check_required_utilities +from pyramid.events import subscriber + + +REQUIRED_UTILITIES = ((INegotiator, '', Negotiator, 'Language negotiator'),) + + +@subscriber(INewLocalSite) +def handle_new_local_site(event): + """Create a new negotiator when a site is created""" + site = event.manager.__parent__ + check_required_utilities(site, REQUIRED_UTILITIES) + + +@utility_config(name='PyAMS I18n', provides=ISiteGenerations) +class I18nGenerationsChecker(object): + """I18n generations checker""" + + generation = 1 + + def evolve(self, site, current=None): + """Check for required utilities""" + check_required_utilities(site, REQUIRED_UTILITIES) diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/zmi/__init__.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n/zmi/__init__.py Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,20 @@ +# +# Copyright (c) 2008-2015 Thierry Florac +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# + +__docformat__ = 'restructuredtext' + + +# import standard library + +# import interfaces + +# import packages diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/zmi/configure.zcml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n/zmi/configure.zcml Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,6 @@ + + + + + diff -r 000000000000 -r 9c21b8e2ba46 src/pyams_i18n/zmi/negotiator.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_i18n/zmi/negotiator.py Thu Feb 19 10:55:01 2015 +0100 @@ -0,0 +1,53 @@ +# +# Copyright (c) 2008-2015 Thierry Florac +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# + +__docformat__ = 'restructuredtext' + + +# import standard library + +# import interfaces +from pyams_i18n.interfaces import INegotiator +from pyams_skin.layer import IPyAMSLayer + +# import packages +from pyams_form.form import AJAXEditForm +from pyams_pagelet.pagelet import pagelet_config +from pyams_zmi.form import AdminDialogEditForm +from pyramid.view import view_config +from z3c.form import field + +from pyams_i18n import _ + + +@pagelet_config(name='properties.html', context=INegotiator, layer=IPyAMSLayer, permission='system.view') +class NegotiatorPropertiesEditForm(AdminDialogEditForm): + """Negotiator properties edit form""" + + legend = _("Update languages negotiator properties") + fields = field.Fields(INegotiator) + ajax_handler = 'properties.json' + + @property + def title(self): + return self.context.__name__ + + def updateWidgets(self, prefix=None): + super(NegotiatorPropertiesEditForm, self).updateWidgets() + self.widgets['server_language'].addClass('select2') + self.widgets['policy'].addClass('select2') + + +@view_config(name='properties.json', context=INegotiator, request_type=IPyAMSLayer, + permission='system.manage', renderer='json', xhr=True) +class NegotiatorPropertiesAJAXEditForm(AJAXEditForm, NegotiatorPropertiesEditForm): + """Negotiator properties edit form, AJAX renderer"""