diff --git a/.meta.toml b/.meta.toml index d914155..2c1d57c 100644 --- a/.meta.toml +++ b/.meta.toml @@ -30,9 +30,12 @@ additional-rules = [ "recursive-include src *.gif", "recursive-include src *.js", "recursive-include src *.metadata", + "recursive-include src *.po", + "recursive-include src *.pot", "recursive-include src *.props", "recursive-include src *.pt", "recursive-include src *.rst", + "recursive-include src *.sh", "recursive-include src *.stx", "recursive-include src *.swf", "recursive-include src *.txt", diff --git a/CHANGES.rst b/CHANGES.rst index 64da016..40316ae 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,7 +4,8 @@ Products.CMFCore Changelog 3.4 (unreleased) ---------------- -- Nothing changed yet. +- Add i18n translation support. + (`#135 `_) 3.3 (2024-01-23) diff --git a/MANIFEST.in b/MANIFEST.in index 992c165..f6641c6 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -17,9 +17,12 @@ recursive-include src *.dtml recursive-include src *.gif recursive-include src *.js recursive-include src *.metadata +recursive-include src *.po +recursive-include src *.pot recursive-include src *.props recursive-include src *.pt recursive-include src *.rst +recursive-include src *.sh recursive-include src *.stx recursive-include src *.swf recursive-include src *.txt diff --git a/src/Products/CMFCore/ActionInformation.py b/src/Products/CMFCore/ActionInformation.py index 001478a..8d046fd 100644 --- a/src/Products/CMFCore/ActionInformation.py +++ b/src/Products/CMFCore/ActionInformation.py @@ -76,7 +76,7 @@ class Action(PropertyManager, SimpleItem): """ Reference to an action. """ - i18n_domain = 'cmf_default' + i18n_domain = 'cmf_core' link_target = '' security = ClassSecurityInfo() diff --git a/src/Products/CMFCore/browser/configure.zcml b/src/Products/CMFCore/browser/configure.zcml index ce35566..45abe30 100644 --- a/src/Products/CMFCore/browser/configure.zcml +++ b/src/Products/CMFCore/browser/configure.zcml @@ -1,7 +1,7 @@ + i18n_domain="cmf_core"> diff --git a/src/Products/CMFCore/configure.zcml b/src/Products/CMFCore/configure.zcml index 44ef0cb..8939e12 100644 --- a/src/Products/CMFCore/configure.zcml +++ b/src/Products/CMFCore/configure.zcml @@ -1,5 +1,8 @@ + xmlns="http://namespaces.zope.org/zope" + xmlns:i18n="http://namespaces.zope.org/i18n"> + + diff --git a/src/Products/CMFCore/exportimport/configure.zcml b/src/Products/CMFCore/exportimport/configure.zcml index 2d5a4e0..8e6a79b 100644 --- a/src/Products/CMFCore/exportimport/configure.zcml +++ b/src/Products/CMFCore/exportimport/configure.zcml @@ -1,7 +1,7 @@ + i18n_domain="cmf_core"> , YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-04-12 15:35+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0\n" +"Language-Code: en\n" +"Language-Name: English\n" +"Preferred-Encodings: utf-8 latin1\n" +"Domain: cmf_core\n" + +#: ../MembershipTool.py:557 +msgid "A home folder for portal members." +msgstr "" + +#: ../MembershipTool.py:575 +msgid "Classic CMFCore home folder for portal members." +msgstr "" + +#: ../WorkflowTool.py:285 +msgid "Could not get info: ${name}" +msgstr "" + +#: ../MembershipTool.py:556 +msgid "Home Folder" +msgstr "" + +#: ../WorkflowTool.py:270 +msgid "No workflow provides '${name}' information." +msgstr "" + +#: ../WorkflowTool.py:241 +msgid "No workflow provides the '${action_id}' action." +msgstr "" + +#: ../WorkflowTool.py:234 +msgid "No workflows found." +msgstr "" + +#: ../WorkflowTool.py:248 +msgid "Requested workflow definition not found." +msgstr "" + +#: ../RegistrationTool.py:144 +msgid "The login name you selected is already in use or is not valid. Please choose another." +msgstr "" + +#: ../PortalContent.py:56 +msgid "This resource is locked via webDAV." +msgstr "" diff --git a/src/Products/CMFCore/locales/pt_BR/LC_MESSAGES/cmf_core.po b/src/Products/CMFCore/locales/pt_BR/LC_MESSAGES/cmf_core.po new file mode 100644 index 0000000..5285abe --- /dev/null +++ b/src/Products/CMFCore/locales/pt_BR/LC_MESSAGES/cmf_core.po @@ -0,0 +1,55 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-04-12 15:35+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0\n" +"Language-Code: en\n" +"Language-Name: English\n" +"Preferred-Encodings: utf-8 latin1\n" +"Domain: DOMAIN\n" + +#: ../MembershipTool.py:557 +msgid "A home folder for portal members." +msgstr "Uma pasta inicial para membros do portal." + +#: ../MembershipTool.py:575 +msgid "Classic CMFCore home folder for portal members." +msgstr "Pasta inicial Classic CMFCore para membros do portal." + +#: ../WorkflowTool.py:285 +msgid "Could not get info: ${name}" +msgstr "Não foi possível obter informação: ${name}" + +#: ../MembershipTool.py:556 +msgid "Home Folder" +msgstr "Pasta Inicial" + +#: ../WorkflowTool.py:270 +msgid "No workflow provides '${name}' information." +msgstr "Nenhum workflow fornece informações de '${name}'." + +#: ../WorkflowTool.py:241 +msgid "No workflow provides the '${action_id}' action." +msgstr "Nenhum workflow fornece a ação '${action_id}'." + +#: ../WorkflowTool.py:234 +msgid "No workflows found." +msgstr "Nenhum workflow encontrado." + +#: ../WorkflowTool.py:248 +msgid "Requested workflow definition not found." +msgstr "Definição de workflow requerida não encontrada." + +#: ../RegistrationTool.py:144 +msgid "The login name you selected is already in use or is not valid. Please choose another." +msgstr "O nome de usuário que você selecionou já está em uso ou não é válido. Por favor escolha outro." + +#: ../PortalContent.py:56 +msgid "This resource is locked via webDAV." +msgstr "Este recurso está bloqueado via webDAV." diff --git a/src/Products/CMFCore/locales/update.sh b/src/Products/CMFCore/locales/update.sh new file mode 100755 index 0000000..b5a2532 --- /dev/null +++ b/src/Products/CMFCore/locales/update.sh @@ -0,0 +1,12 @@ +#!/bin/bash +# i18ndude should be available in current $PATH (eg by running +# ``export PATH=$PATH:$BUILDOUT_DIR/bin`` when i18ndude is located in your buildout's bin directory) +# +# For every language you want to translate into you need a +# locales/[language]/LC_MESSAGES/cmf_core.po +# (e.g. locales/de/LC_MESSAGES/cmf_core.po) + +domain=cmf_core + +i18ndude rebuild-pot --pot $domain.pot --create $domain ../ +i18ndude sync --pot $domain.pot */LC_MESSAGES/$domain.po diff --git a/src/Products/CMFCore/permissions.zcml b/src/Products/CMFCore/permissions.zcml index f08c93e..9cc4515 100644 --- a/src/Products/CMFCore/permissions.zcml +++ b/src/Products/CMFCore/permissions.zcml @@ -1,6 +1,6 @@ + i18n_domain="cmf_core"> diff --git a/src/Products/CMFCore/utils.py b/src/Products/CMFCore/utils.py index 99672f1..2f99d6d 100644 --- a/src/Products/CMFCore/utils.py +++ b/src/Products/CMFCore/utils.py @@ -910,4 +910,4 @@ def base64_decode(text): security.declarePublic('Message') # NOQA: flake8: D001 -Message = MessageFactory('cmf_default') +Message = MessageFactory('cmf_core')