diff --git a/website_canonical_url/README.rst b/website_canonical_url/README.rst new file mode 100644 index 0000000000..f8c00b835d --- /dev/null +++ b/website_canonical_url/README.rst @@ -0,0 +1,85 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +===================== +Website Canonical URL +===================== + +In Website Builder, eCommerce, Blog, etc. Odoo add parameters in URLs, like category, +page or sorting. This is a bad thing for SEO because it creates DUST (Duplicate URL, +Same Text) and Duplicate Content. That is to say, multiple URLs that leads to the same +page search engine's index. + +This module doesn't prevent Odoo to generate such URLs, but it helps to reduce the +search engine's index size by adding canonical URLs for each page : +It insert a HTML tag in the html header +that contains a `canonical URL `_ +for the current page, no matter what query string is. +Additionally you'll have `rel=next and rel=prev links +`_ +whenever a pager is found. + + +Configuration +------------- + +Canonical URL is absolute. The domain name by default matches + +"Settings / Technical / System Parameters / web.base.url" + +This might not be enough to make sure that you have always one and only one URL +to access your resources. + +You can force the domain by setting "Canonical domain" field into website settings. + + +How to verify +------------- + +To check this on your website inspect the source of a page: +you'll find canonical and prev/next "" elements inside "". + +On a demo site (like Runbot) you can go to "/page/website_canonical_url.canonical_demo" +and inspect page's source. + + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/186/10.0 + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. + +Credits +======= + +Contributors +------------ + +* Thomas Rehn +* Rami Alwafaie +* Jairo Llopis +* Xavier Brochard +* Simone Orsi + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. diff --git a/website_canonical_url/__init__.py b/website_canonical_url/__init__.py new file mode 100644 index 0000000000..ddc054804b --- /dev/null +++ b/website_canonical_url/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Copyright initOS GmbH 2016 +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models diff --git a/website_canonical_url/__manifest__.py b/website_canonical_url/__manifest__.py new file mode 100644 index 0000000000..ceabbd983b --- /dev/null +++ b/website_canonical_url/__manifest__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Copyright initOS GmbH 2016 +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': "Website Canonical URL", + 'summary': "Canonical URL in Website Headers", + 'author': "initOS GmbH, Tecnativa, " + "Camptocamp, Odoo Community Association (OCA)", + 'website': "https://github.com/OCA/website", + 'category': 'Website', + 'version': '10.0.1.1.0', + 'license': 'AGPL-3', + 'depends': [ + 'website', + ], + 'data': [ + 'views/website_views.xml', + 'templates/layout.xml', + ], + 'demo': [ + 'demo/pages.xml', + ], +} diff --git a/website_canonical_url/demo/pages.xml b/website_canonical_url/demo/pages.xml new file mode 100644 index 0000000000..5bd430e344 --- /dev/null +++ b/website_canonical_url/demo/pages.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/website_canonical_url/i18n/af.po b/website_canonical_url/i18n/af.po new file mode 100644 index 0000000000..24167d2250 --- /dev/null +++ b/website_canonical_url/i18n/af.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Afrikaans (https://www.transifex.com/oca/teams/23907/af/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: af\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Webtuiste" diff --git a/website_canonical_url/i18n/ar.po b/website_canonical_url/i18n/ar.po new file mode 100644 index 0000000000..96f8816272 --- /dev/null +++ b/website_canonical_url/i18n/ar.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Arabic (https://www.transifex.com/oca/teams/23907/ar/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "الموقع" diff --git a/website_canonical_url/i18n/bg.po b/website_canonical_url/i18n/bg.po new file mode 100644 index 0000000000..00cc8abd01 --- /dev/null +++ b/website_canonical_url/i18n/bg.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# Kaloyan Naumov , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: Kaloyan Naumov , 2016\n" +"Language-Team: Bulgarian (https://www.transifex.com/oca/teams/23907/bg/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Уебсайт" diff --git a/website_canonical_url/i18n/bs.po b/website_canonical_url/i18n/bs.po new file mode 100644 index 0000000000..cc75e78c4a --- /dev/null +++ b/website_canonical_url/i18n/bs.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Bosnian (https://www.transifex.com/oca/teams/23907/bs/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: bs\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Web stranica" diff --git a/website_canonical_url/i18n/ca.po b/website_canonical_url/i18n/ca.po new file mode 100644 index 0000000000..3a9699ef3d --- /dev/null +++ b/website_canonical_url/i18n/ca.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# Carles Antoli , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-07 01:09+0000\n" +"PO-Revision-Date: 2016-07-07 01:09+0000\n" +"Last-Translator: Carles Antoli , 2016\n" +"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Lloc web" diff --git a/website_canonical_url/i18n/cs.po b/website_canonical_url/i18n/cs.po new file mode 100644 index 0000000000..13da6dfdac --- /dev/null +++ b/website_canonical_url/i18n/cs.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Czech (https://www.transifex.com/oca/teams/23907/cs/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: cs\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Webová stránka" diff --git a/website_canonical_url/i18n/da.po b/website_canonical_url/i18n/da.po new file mode 100644 index 0000000000..4fb780fe2a --- /dev/null +++ b/website_canonical_url/i18n/da.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Danish (https://www.transifex.com/oca/teams/23907/da/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Hjemmeside" diff --git a/website_canonical_url/i18n/de.po b/website_canonical_url/i18n/de.po new file mode 100644 index 0000000000..f1e20eed39 --- /dev/null +++ b/website_canonical_url/i18n/de.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# Thomas A. Jaeger , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-07 01:09+0000\n" +"PO-Revision-Date: 2016-07-07 01:09+0000\n" +"Last-Translator: Thomas A. Jaeger , 2016\n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Webseite" diff --git a/website_canonical_url/i18n/el.po b/website_canonical_url/i18n/el.po new file mode 100644 index 0000000000..7f687ed83e --- /dev/null +++ b/website_canonical_url/i18n/el.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Greek (https://www.transifex.com/oca/teams/23907/el/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: el\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Ιστότοπος" diff --git a/website_canonical_url/i18n/el_GR.po b/website_canonical_url/i18n/el_GR.po new file mode 100644 index 0000000000..f1718a1d26 --- /dev/null +++ b/website_canonical_url/i18n/el_GR.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# Kostas Goutoudis , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-07 01:09+0000\n" +"PO-Revision-Date: 2016-07-07 01:09+0000\n" +"Last-Translator: Kostas Goutoudis , 2016\n" +"Language-Team: Greek (Greece) (https://www.transifex.com/oca/teams/23907/el_GR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: el_GR\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Ιστότοπος" diff --git a/website_canonical_url/i18n/en_GB.po b/website_canonical_url/i18n/en_GB.po new file mode 100644 index 0000000000..f60e47ca8d --- /dev/null +++ b/website_canonical_url/i18n/en_GB.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: English (United Kingdom) (https://www.transifex.com/oca/teams/23907/en_GB/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: en_GB\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Website" diff --git a/website_canonical_url/i18n/es.po b/website_canonical_url/i18n/es.po new file mode 100644 index 0000000000..52ccae6043 --- /dev/null +++ b/website_canonical_url/i18n/es.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-07 01:09+0000\n" +"PO-Revision-Date: 2016-07-07 01:09+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Sitio web" diff --git a/website_canonical_url/i18n/es_AR.po b/website_canonical_url/i18n/es_AR.po new file mode 100644 index 0000000000..da3e81733a --- /dev/null +++ b/website_canonical_url/i18n/es_AR.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Argentina) (https://www.transifex.com/oca/teams/23907/es_AR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_AR\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Sitio web" diff --git a/website_canonical_url/i18n/es_CL.po b/website_canonical_url/i18n/es_CL.po new file mode 100644 index 0000000000..1f6be37678 --- /dev/null +++ b/website_canonical_url/i18n/es_CL.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Chile) (https://www.transifex.com/oca/teams/23907/es_CL/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_CL\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Sitio Web" diff --git a/website_canonical_url/i18n/es_CO.po b/website_canonical_url/i18n/es_CO.po new file mode 100644 index 0000000000..5cf0977894 --- /dev/null +++ b/website_canonical_url/i18n/es_CO.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Colombia) (https://www.transifex.com/oca/teams/23907/es_CO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_CO\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Sitio Web" diff --git a/website_canonical_url/i18n/es_CR.po b/website_canonical_url/i18n/es_CR.po new file mode 100644 index 0000000000..80c7dcced6 --- /dev/null +++ b/website_canonical_url/i18n/es_CR.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Costa Rica) (https://www.transifex.com/oca/teams/23907/es_CR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_CR\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Sitio web" diff --git a/website_canonical_url/i18n/es_DO.po b/website_canonical_url/i18n/es_DO.po new file mode 100644 index 0000000000..2a03b83307 --- /dev/null +++ b/website_canonical_url/i18n/es_DO.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Dominican Republic) (https://www.transifex.com/oca/teams/23907/es_DO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_DO\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Sitio web" diff --git a/website_canonical_url/i18n/es_EC.po b/website_canonical_url/i18n/es_EC.po new file mode 100644 index 0000000000..1a62361bfe --- /dev/null +++ b/website_canonical_url/i18n/es_EC.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Ecuador) (https://www.transifex.com/oca/teams/23907/es_EC/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_EC\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Sitio web" diff --git a/website_canonical_url/i18n/es_MX.po b/website_canonical_url/i18n/es_MX.po new file mode 100644 index 0000000000..3b375f5fdf --- /dev/null +++ b/website_canonical_url/i18n/es_MX.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Mexico) (https://www.transifex.com/oca/teams/23907/es_MX/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_MX\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Sitio Web" diff --git a/website_canonical_url/i18n/es_PE.po b/website_canonical_url/i18n/es_PE.po new file mode 100644 index 0000000000..d3dc665c57 --- /dev/null +++ b/website_canonical_url/i18n/es_PE.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Peru) (https://www.transifex.com/oca/teams/23907/es_PE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_PE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Sitio Web" diff --git a/website_canonical_url/i18n/et.po b/website_canonical_url/i18n/et.po new file mode 100644 index 0000000000..e1f1304d62 --- /dev/null +++ b/website_canonical_url/i18n/et.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Estonian (https://www.transifex.com/oca/teams/23907/et/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: et\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Veebileht" diff --git a/website_canonical_url/i18n/eu.po b/website_canonical_url/i18n/eu.po new file mode 100644 index 0000000000..877f51b478 --- /dev/null +++ b/website_canonical_url/i18n/eu.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-05 16:29+0000\n" +"PO-Revision-Date: 2017-01-05 16:29+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Basque (https://www.transifex.com/oca/teams/23907/eu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: eu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Webgunea" diff --git a/website_canonical_url/i18n/fa.po b/website_canonical_url/i18n/fa.po new file mode 100644 index 0000000000..0809438a13 --- /dev/null +++ b/website_canonical_url/i18n/fa.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Persian (https://www.transifex.com/oca/teams/23907/fa/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fa\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "تارنما" diff --git a/website_canonical_url/i18n/fi.po b/website_canonical_url/i18n/fi.po new file mode 100644 index 0000000000..61f0341178 --- /dev/null +++ b/website_canonical_url/i18n/fi.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# Jarmo Kortetjärvi , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-07 01:09+0000\n" +"PO-Revision-Date: 2016-07-07 01:09+0000\n" +"Last-Translator: Jarmo Kortetjärvi , 2016\n" +"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Verkkosivut" diff --git a/website_canonical_url/i18n/fr.po b/website_canonical_url/i18n/fr.po new file mode 100644 index 0000000000..7eaf99e433 --- /dev/null +++ b/website_canonical_url/i18n/fr.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# Loic , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-07 01:09+0000\n" +"PO-Revision-Date: 2016-07-07 01:09+0000\n" +"Last-Translator: Loic , 2016\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Site Internet" diff --git a/website_canonical_url/i18n/gl.po b/website_canonical_url/i18n/gl.po new file mode 100644 index 0000000000..a66aa17fab --- /dev/null +++ b/website_canonical_url/i18n/gl.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-05 16:29+0000\n" +"PO-Revision-Date: 2017-01-05 16:29+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Galician (https://www.transifex.com/oca/teams/23907/gl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: gl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Sitio web" diff --git a/website_canonical_url/i18n/he.po b/website_canonical_url/i18n/he.po new file mode 100644 index 0000000000..ab078b0f7b --- /dev/null +++ b/website_canonical_url/i18n/he.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Hebrew (https://www.transifex.com/oca/teams/23907/he/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: he\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "אתר" diff --git a/website_canonical_url/i18n/hr.po b/website_canonical_url/i18n/hr.po new file mode 100644 index 0000000000..0b975be6a9 --- /dev/null +++ b/website_canonical_url/i18n/hr.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: hr\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Web stranice" diff --git a/website_canonical_url/i18n/hr_HR.po b/website_canonical_url/i18n/hr_HR.po new file mode 100644 index 0000000000..5256cacae7 --- /dev/null +++ b/website_canonical_url/i18n/hr_HR.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# Bole , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-07 01:09+0000\n" +"PO-Revision-Date: 2016-07-07 01:09+0000\n" +"Last-Translator: Bole , 2016\n" +"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/hr_HR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: hr_HR\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Webstranice" diff --git a/website_canonical_url/i18n/hu.po b/website_canonical_url/i18n/hu.po new file mode 100644 index 0000000000..8e65a57870 --- /dev/null +++ b/website_canonical_url/i18n/hu.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Hungarian (https://www.transifex.com/oca/teams/23907/hu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Honlap" diff --git a/website_canonical_url/i18n/id.po b/website_canonical_url/i18n/id.po new file mode 100644 index 0000000000..5b409aa98a --- /dev/null +++ b/website_canonical_url/i18n/id.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Indonesian (https://www.transifex.com/oca/teams/23907/id/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Situs Web" diff --git a/website_canonical_url/i18n/it.po b/website_canonical_url/i18n/it.po new file mode 100644 index 0000000000..d2f4ca81bd --- /dev/null +++ b/website_canonical_url/i18n/it.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# Paolo Valier , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-07 01:09+0000\n" +"PO-Revision-Date: 2016-07-07 01:09+0000\n" +"Last-Translator: Paolo Valier , 2016\n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Sito" diff --git a/website_canonical_url/i18n/ja.po b/website_canonical_url/i18n/ja.po new file mode 100644 index 0000000000..29a9ba489e --- /dev/null +++ b/website_canonical_url/i18n/ja.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Japanese (https://www.transifex.com/oca/teams/23907/ja/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "ウェブサイト" diff --git a/website_canonical_url/i18n/ka.po b/website_canonical_url/i18n/ka.po new file mode 100644 index 0000000000..5c236f8d7d --- /dev/null +++ b/website_canonical_url/i18n/ka.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Georgian (https://www.transifex.com/oca/teams/23907/ka/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ka\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "ვებსაიტი" diff --git a/website_canonical_url/i18n/kab.po b/website_canonical_url/i18n/kab.po new file mode 100644 index 0000000000..e5e0819b36 --- /dev/null +++ b/website_canonical_url/i18n/kab.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Kabyle (https://www.transifex.com/oca/teams/23907/kab/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: kab\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Asmel Web" diff --git a/website_canonical_url/i18n/ko.po b/website_canonical_url/i18n/ko.po new file mode 100644 index 0000000000..7e850cb701 --- /dev/null +++ b/website_canonical_url/i18n/ko.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Korean (https://www.transifex.com/oca/teams/23907/ko/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ko\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "웹사이트" diff --git a/website_canonical_url/i18n/lt.po b/website_canonical_url/i18n/lt.po new file mode 100644 index 0000000000..9b55c04583 --- /dev/null +++ b/website_canonical_url/i18n/lt.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Lithuanian (https://www.transifex.com/oca/teams/23907/lt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: lt\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Tinklapis" diff --git a/website_canonical_url/i18n/lv.po b/website_canonical_url/i18n/lv.po new file mode 100644 index 0000000000..63522ca1d8 --- /dev/null +++ b/website_canonical_url/i18n/lv.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Latvian (https://www.transifex.com/oca/teams/23907/lv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: lv\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Tīkla vietne" diff --git a/website_canonical_url/i18n/mk.po b/website_canonical_url/i18n/mk.po new file mode 100644 index 0000000000..ed9931bb6d --- /dev/null +++ b/website_canonical_url/i18n/mk.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Macedonian (https://www.transifex.com/oca/teams/23907/mk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: mk\n" +"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Вебсајт" diff --git a/website_canonical_url/i18n/mn.po b/website_canonical_url/i18n/mn.po new file mode 100644 index 0000000000..9f9a270c8b --- /dev/null +++ b/website_canonical_url/i18n/mn.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Mongolian (https://www.transifex.com/oca/teams/23907/mn/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: mn\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Вэбсайт" diff --git a/website_canonical_url/i18n/nb.po b/website_canonical_url/i18n/nb.po new file mode 100644 index 0000000000..78da455e03 --- /dev/null +++ b/website_canonical_url/i18n/nb.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Norwegian Bokmål (https://www.transifex.com/oca/teams/23907/nb/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nb\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Nettsted" diff --git a/website_canonical_url/i18n/nl.po b/website_canonical_url/i18n/nl.po new file mode 100644 index 0000000000..645e36d9f0 --- /dev/null +++ b/website_canonical_url/i18n/nl.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-05 16:29+0000\n" +"PO-Revision-Date: 2017-01-05 16:29+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Website" diff --git a/website_canonical_url/i18n/pl.po b/website_canonical_url/i18n/pl.po new file mode 100644 index 0000000000..43dbf77835 --- /dev/null +++ b/website_canonical_url/i18n/pl.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Polish (https://www.transifex.com/oca/teams/23907/pl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Strona WWW" diff --git a/website_canonical_url/i18n/pt_BR.po b/website_canonical_url/i18n/pt_BR.po new file mode 100644 index 0000000000..e980ff5549 --- /dev/null +++ b/website_canonical_url/i18n/pt_BR.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# danimaribeiro , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-07 01:09+0000\n" +"PO-Revision-Date: 2016-07-07 01:09+0000\n" +"Last-Translator: danimaribeiro , 2016\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/23907/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Website" diff --git a/website_canonical_url/i18n/ru.po b/website_canonical_url/i18n/ru.po new file mode 100644 index 0000000000..530c7d701d --- /dev/null +++ b/website_canonical_url/i18n/ru.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# Mikhail - , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-07 01:09+0000\n" +"PO-Revision-Date: 2016-07-07 01:09+0000\n" +"Last-Translator: Mikhail - , 2016\n" +"Language-Team: Russian (https://www.transifex.com/oca/teams/23907/ru/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Сайт" diff --git a/website_canonical_url/i18n/sk.po b/website_canonical_url/i18n/sk.po new file mode 100644 index 0000000000..f1eda97aec --- /dev/null +++ b/website_canonical_url/i18n/sk.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Slovak (https://www.transifex.com/oca/teams/23907/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Webová stránka" diff --git a/website_canonical_url/i18n/sl.po b/website_canonical_url/i18n/sl.po new file mode 100644 index 0000000000..7ed6c03192 --- /dev/null +++ b/website_canonical_url/i18n/sl.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# Matjaž Mozetič , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-07 01:09+0000\n" +"PO-Revision-Date: 2016-07-07 01:09+0000\n" +"Last-Translator: Matjaž Mozetič , 2016\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Spletna stran" diff --git a/website_canonical_url/i18n/sr.po b/website_canonical_url/i18n/sr.po new file mode 100644 index 0000000000..1afb4faf0e --- /dev/null +++ b/website_canonical_url/i18n/sr.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Serbian (https://www.transifex.com/oca/teams/23907/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sr\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Web stranica" diff --git a/website_canonical_url/i18n/sr@latin.po b/website_canonical_url/i18n/sr@latin.po new file mode 100644 index 0000000000..a0abc98d60 --- /dev/null +++ b/website_canonical_url/i18n/sr@latin.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Serbian (Latin) (https://www.transifex.com/oca/teams/23907/sr@latin/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sr@latin\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Internet stranica" diff --git a/website_canonical_url/i18n/sv.po b/website_canonical_url/i18n/sv.po new file mode 100644 index 0000000000..eff589965d --- /dev/null +++ b/website_canonical_url/i18n/sv.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Swedish (https://www.transifex.com/oca/teams/23907/sv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Webbplats" diff --git a/website_canonical_url/i18n/th.po b/website_canonical_url/i18n/th.po new file mode 100644 index 0000000000..61255a5168 --- /dev/null +++ b/website_canonical_url/i18n/th.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Thai (https://www.transifex.com/oca/teams/23907/th/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: th\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "เว็บไซต์" diff --git a/website_canonical_url/i18n/tr.po b/website_canonical_url/i18n/tr.po new file mode 100644 index 0000000000..8679435a36 --- /dev/null +++ b/website_canonical_url/i18n/tr.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# Ahmet Altinisik , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-05 16:29+0000\n" +"PO-Revision-Date: 2017-01-05 16:29+0000\n" +"Last-Translator: Ahmet Altinisik , 2017\n" +"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Web Sitesi" diff --git a/website_canonical_url/i18n/uk.po b/website_canonical_url/i18n/uk.po new file mode 100644 index 0000000000..37472e197f --- /dev/null +++ b/website_canonical_url/i18n/uk.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Ukrainian (https://www.transifex.com/oca/teams/23907/uk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: uk\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Веб-сайт" diff --git a/website_canonical_url/i18n/vi.po b/website_canonical_url/i18n/vi.po new file mode 100644 index 0000000000..e4ba72873b --- /dev/null +++ b/website_canonical_url/i18n/vi.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Vietnamese (https://www.transifex.com/oca/teams/23907/vi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: vi\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "Trang web" diff --git a/website_canonical_url/i18n/zh_CN.po b/website_canonical_url/i18n/zh_CN.po new file mode 100644 index 0000000000..6bc1df1bba --- /dev/null +++ b/website_canonical_url/i18n/zh_CN.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "网站" diff --git a/website_canonical_url/i18n/zh_TW.po b/website_canonical_url/i18n/zh_TW.po new file mode 100644 index 0000000000..7bff4f23b8 --- /dev/null +++ b/website_canonical_url/i18n/zh_TW.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_canonical_url +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 01:52+0000\n" +"PO-Revision-Date: 2016-11-25 01:52+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Chinese (Taiwan) (https://www.transifex.com/oca/teams/23907/zh_TW/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: website_canonical_url +#: model:ir.model,name:website_canonical_url.model_website +msgid "Website" +msgstr "網站" diff --git a/website_canonical_url/models/__init__.py b/website_canonical_url/models/__init__.py new file mode 100644 index 0000000000..6c03cd1726 --- /dev/null +++ b/website_canonical_url/models/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# Copyright initOS GmbH 2016 +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import website +from . import res_config diff --git a/website_canonical_url/models/res_config.py b/website_canonical_url/models/res_config.py new file mode 100644 index 0000000000..6c727dce6e --- /dev/null +++ b/website_canonical_url/models/res_config.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Simone Orsi +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models, fields + + +class WebsiteConfigSettings(models.TransientModel): + + _inherit = 'website.config.settings' + + canonical_domain = fields.Char(related='website_id.canonical_domain') diff --git a/website_canonical_url/models/website.py b/website_canonical_url/models/website.py new file mode 100644 index 0000000000..2561b947a4 --- /dev/null +++ b/website_canonical_url/models/website.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Simone Orsi +# Copyright initOS GmbH 2016 +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models, api, fields, exceptions, _ +from odoo.http import request +from urlparse import urlparse, urljoin + + +class Website(models.Model): + _inherit = 'website' + + canonical_domain = fields.Char( + help='Canonical domain is used to build unique canonical URLs ' + 'to make SEO happy.' + ) + + @api.constrains('canonical_domain') + def _check_canonical_domain(self): + domain = self.canonical_domain + if domain and not urlparse(domain).scheme: + raise exceptions.ValidationError(_( + 'Canonical domain must contain protocol `http(s)://`' + )) + + @api.multi + def get_canonical_url(self, req=None): + return urljoin( + self._get_canonical_domain(), + self._get_canonical_relative_url(req=req) + ) + + @api.multi + def _get_canonical_domain(self): + self.ensure_one() + if self.canonical_domain: + return self.canonical_domain + params = self.env['ir.config_parameter'].sudo() + return params.get_param('web.base.url') + + @api.multi + def _get_canonical_relative_url(self, req=None): + req = req or request + url = req.httprequest.path + lang_path = '/' + if req.lang != req.website.default_lang_code: + lang_path = '/%s/' % req.lang + # enforce language path + url = lang_path.rstrip('/') + url + if self._is_root_page(req.httprequest.path): + # special case for main menu items: point always to root + url = lang_path + return url + + def _is_root_page(self, url): + return ( + self.menu_id.child_id and + self.menu_id.child_id[0].url == url + ) diff --git a/website_canonical_url/templates/layout.xml b/website_canonical_url/templates/layout.xml new file mode 100644 index 0000000000..47f3c2e91d --- /dev/null +++ b/website_canonical_url/templates/layout.xml @@ -0,0 +1,28 @@ + + + + + + + diff --git a/website_canonical_url/tests/__init__.py b/website_canonical_url/tests/__init__.py new file mode 100644 index 0000000000..07df4e68b2 --- /dev/null +++ b/website_canonical_url/tests/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Simone Orsi +# Copyright 2016 Jairo Llopis +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_url +from . import test_tags diff --git a/website_canonical_url/tests/test_tags.py b/website_canonical_url/tests/test_tags.py new file mode 100644 index 0000000000..955b4773dc --- /dev/null +++ b/website_canonical_url/tests/test_tags.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Simone Orsi +# Copyright 2016 Jairo Llopis +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import HttpCase +from odoo.modules.module import get_resource_path +from odoo import tools +from lxml.html import document_fromstring + + +def load_xml(cr, module, filepath, kind='demo'): + tools.convert_file( + cr, module, + get_resource_path(module, filepath), + {}, mode='init', noupdate=False, kind=kind) + + +class UICase(HttpCase): + def setUp(self): + super(UICase, self).setUp() + self._reload_page() + self.website = self.env['website'].browse(1) + self.domain = self.website._get_canonical_domain() + self.path = "/page/website_canonical_url.canonical_demo" + self.url_absolute = self.domain + self.path + self.qstring = "?ultimate_answer=42" + self.url_full = "%s%s" % (self.url_absolute, self.qstring) + self.url_data = self.url_open(self.url_full) + self.doc = document_fromstring(self.url_data.read()) + + def _reload_page(self): + # if you run tests more than once (locally for instance) + # sp if you update the page we make sure is reloaded. + self.env.ref('website_canonical_url.canonical_demo').unlink() + load_xml(self.cr, 'website_canonical_url', 'demo/pages.xml') + + def test_canonical(self): + """Canonical URL is built OK.""" + node = self.doc.xpath("/html/head/link[@rel='canonical']")[0] + self.assertEqual(node.attrib["href"], self.url_absolute) + + def test_pager_next(self): + """Next pager link is OK.""" + node = self.doc.xpath("/html/head/link[@rel='next']")[0] + self.assertEqual( + node.attrib["href"], + "%s/page/3%s" % (self.path, self.qstring), + ) + + def test_pager_prev(self): + """Prev pager link is OK.""" + node = self.doc.xpath("/html/head/link[@rel='prev']")[0] + self.assertEqual( + node.attrib["href"], + "%s%s" % (self.path, self.qstring), + ) diff --git a/website_canonical_url/tests/test_url.py b/website_canonical_url/tests/test_url.py new file mode 100644 index 0000000000..8477cea5ff --- /dev/null +++ b/website_canonical_url/tests/test_url.py @@ -0,0 +1,129 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Simone Orsi +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import SavepointCase +from odoo import exceptions +from werkzeug.wrappers import Request + + +class FakeRequest(object): + + def __init__(self, website, url, lang='en_US'): + self.website = website + self.lang = lang + self.httprequest = Request.from_values(url) + + +class URLCase(SavepointCase): + + @classmethod + def setUpClass(cls): + super(URLCase, cls).setUpClass() + cls.website = cls.env['website'].browse(1) + cls.base_url = cls.env['ir.config_parameter'].get_param('web.base.url') + + def test_canonical_domain_default(self): + self.assertEqual( + self.website._get_canonical_domain(), + self.base_url + ) + + def test_canonical_domain_custom(self): + self.website.canonical_domain = 'https://oh.yeah' + self.assertEqual( + self.website._get_canonical_domain(), + 'https://oh.yeah' + ) + + def test_canonical_domain_protocol_validation(self): + with self.assertRaises(exceptions.ValidationError): + self.website.canonical_domain = 'oh.yeah' + with self.assertRaises(exceptions.ValidationError): + self.website.canonical_domain = 'http.yeah' + + def test_canonical_relative_url_nolang(self): + req = FakeRequest(self.website, '/my/lovely/page?foo=baz') + self.assertEqual( + self.website._get_canonical_relative_url(req=req), + '/my/lovely/page' + ) + + def test_canonical_relative_url_nolang_no_match(self): + # no lang in path and lang is not the default one + req = FakeRequest( + self.website, '/my/lovely/page?foo=baz', lang='it_IT') + self.assertEqual( + self.website._get_canonical_relative_url(req=req), + '/it_IT/my/lovely/page' + ) + + def test_canonical_relative_url_default_lang_match(self): + req = FakeRequest( + self.website, '/it_IT/my/lovely/page?foo=baz', lang='it_IT') + self.website.default_lang_id = self.env.ref('base.lang_it') + # actually, in this case, where the lang is the same of website + # odoo will redirect to the root URL. + # Here we just make sure that extra stuff is splitted out + self.assertEqual( + self.website._get_canonical_relative_url(req=req), + '/it_IT/my/lovely/page' + ) + + def test_canonical_relative_url_default_lang_no_match(self): + req = FakeRequest(self.website, '/my/lovely/page?foo=baz') + self.website.default_lang_id = self.env.ref('base.lang_it') + self.assertEqual( + self.website._get_canonical_relative_url(req=req), + '/en_US/my/lovely/page' + ) + + def test_canonical_relative_url_home_special_case(self): + req = FakeRequest(self.website, '/page/homepage?foo=baz', lang='it_IT') + self.website.default_lang_id = self.env.ref('base.lang_it') + self.assertEqual( + self.website._get_canonical_relative_url(req=req), + '/' + ) + + def test_canonical_relative_url_home_special_case_lang_no_match(self): + req = FakeRequest(self.website, '/page/homepage?foo=baz') + self.website.default_lang_id = self.env.ref('base.lang_it') + self.assertEqual( + self.website._get_canonical_relative_url(req=req), + '/en_US/' + ) + + def test_canonical_url(self): + self.website.canonical_domain = 'https://oh.yeah' + req = FakeRequest(self.website, '/page/foo?foo=baz') + self.assertEqual( + self.website.get_canonical_url(req=req), + 'https://oh.yeah/page/foo' + ) + + def test_canonical_url_default_lang_no_match(self): + self.website.canonical_domain = 'https://oh.yeah' + req = FakeRequest(self.website, '/my/lovely/page?foo=baz') + self.website.default_lang_id = self.env.ref('base.lang_it') + self.assertEqual( + self.website.get_canonical_url(req=req), + 'https://oh.yeah/en_US/my/lovely/page' + ) + + def test_canonical_url_home_special_case(self): + self.website.canonical_domain = 'https://oh.yeah' + req = FakeRequest(self.website, '/page/homepage?foo=baz') + self.assertEqual( + self.website.get_canonical_url(req=req), + 'https://oh.yeah/' + ) + + def test_canonical_url_home_special_case_no_match(self): + self.website.canonical_domain = 'https://oh.yeah' + req = FakeRequest( + self.website, '/page/homepage?foo=baz', lang='it_IT') + self.assertEqual( + self.website.get_canonical_url(req=req), + 'https://oh.yeah/it_IT/' + ) diff --git a/website_canonical_url/views/website_views.xml b/website_canonical_url/views/website_views.xml new file mode 100644 index 0000000000..982d8babca --- /dev/null +++ b/website_canonical_url/views/website_views.xml @@ -0,0 +1,23 @@ + + + + + website canonical form + website + + + + + + + + website settings canonical form + website.config.settings + + + + + + + +