From: hannosch <svn...@pl...> - 2006-06-29 02:34:37
|
Author: hannosch Date: Thu Jun 29 02:34:32 2006 New Revision: 6655 Modified: Archetypes/trunk/BaseObject.py Archetypes/trunk/ExtensibleMetadata.py Archetypes/trunk/HISTORY.txt Archetypes/trunk/TemplateMixin.py Archetypes/trunk/__init__.py Archetypes/trunk/docs/quickref.rst Archetypes/trunk/tests/test_baseschema.py Log: Changed BaseObject and ExtensibleMetadata to use new Message approach for internationalization of labels and descriptions. Modified: Archetypes/trunk/BaseObject.py ============================================================================== --- Archetypes/trunk/BaseObject.py (original) +++ Archetypes/trunk/BaseObject.py Thu Jun 29 02:34:32 2006 @@ -1,6 +1,7 @@ import sys from Globals import InitializeClass +from Products.Archetypes import PloneMessageFactory as _ from Products.Archetypes.debug import log from Products.Archetypes.debug import log_exc from Products.Archetypes.debug import _default_logger @@ -108,13 +109,11 @@ mutator='setId', default=None, widget=IdWidget( - label='Short Name', - label_msgid='label_short_name', - description='Should not contain spaces, underscores or mixed case. '\ - 'Short Name is part of the item\'s web address.', - description_msgid='help_shortname', - visible={'view' : 'invisible'}, - i18n_domain='plone', + label=_(u'label_short_name', default=u'Short Name'), + description=_(u'help_shortname', + default=u'Should not contain spaces, underscores or mixed case. ' + 'Short Name is part of the item\'s web address.'), + visible={'view' : 'invisible'} ), ), Modified: Archetypes/trunk/ExtensibleMetadata.py ============================================================================== --- Archetypes/trunk/ExtensibleMetadata.py (original) +++ Archetypes/trunk/ExtensibleMetadata.py Thu Jun 29 02:34:32 2006 @@ -1,6 +1,7 @@ import string from logging import INFO, DEBUG +from Products.Archetypes import PloneMessageFactory as _ from Products.Archetypes.Field import * from Products.Archetypes.Widget import * from Products.Archetypes.Schema import Schema @@ -24,12 +25,6 @@ _marker=[] -try: - True -except NameError: - True=1 - False=0 - FLOOR_DATE = DateTime(1000, 0) # always effective CEILING_DATE = DateTime(2500, 0) # never expires @@ -56,15 +51,14 @@ default=None, enforceVocabulary=1, vocabulary=DisplayList(( - ('None', 'Default', 'label_discussion_default'), - ('1', 'Enabled', 'label_discussion_enabled'), - ('0', 'Disabled', 'label_discussion_disabled'), - )), + ('None', _(u'label_discussion_default', default=u'Default')), + ('1', _(u'label_discussion_enabled', default=u'Enabled')), + ('0', _(u'label_discussion_disabled', default=u'Disabled')), + )), widget=SelectionWidget( - label="Allow Discussion on this item", - label_msgid="label_allow_discussion", - description_msgid="help_allow_discussion", - i18n_domain="plone"), + label=_(u'label_allow_discussion', + default=u'Allow Discussion on this item') + ), ), LinesField( 'subject', @@ -72,10 +66,8 @@ accessor="Subject", searchable=True, widget=KeywordWidget( - label="Keywords", - label_msgid="label_keywords", - description_msgid="help_keyword", - i18n_domain="plone"), + label=_(u'label_keywords', default=u'Keywords') + ), ), TextField( 'description', @@ -83,64 +75,56 @@ searchable=1, accessor="Description", widget=TextAreaWidget( - label='Description', - description="A short summary of the content", - label_msgid="label_description", - description_msgid="help_description", - i18n_domain="plone"), + label=_(u'label_description', default=u'Description'), + description=_(u'help_description', + default=u'A short summary of the content'), + ), ), LinesField( 'contributors', accessor="Contributors", widget=LinesWidget( - label='Contributors', - label_msgid="label_contributors", - description="The names of people that have contributed to this " - "item. Each contributor should be on a separate " - "line.", - description_msgid="help_contributors", - i18n_domain="plone"), + label=_(u'label_contributors', u'Contributors'), + description=_(u'help_contributors', + default=u"The names of people that have contributed " + "to this item. Each contributor should " + "be on a separate line."), + ), ), LinesField( 'creators', accessor="Creators", widget=LinesWidget( - label='Creators', - label_msgid="label_creators", - rows = 3, - description="Persons responsible for creating the content of " - "this item. Please enter a list of user names, one " - "per line. The principal creator should come first.", - description_msgid="help_creators", - i18n_domain="plone"), + label=_(u'label_creators', u'Creators'), + description=_(u'help_creators', + default=u"Persons responsible for creating the content of " + "this item. Please enter a list of user names, one " + "per line. The principal creator should come first."), + rows = 3 + ), ), DateTimeField( 'effectiveDate', mutator='setEffectiveDate', languageIndependent = True, - #default=FLOOR_DATE, widget=CalendarWidget( - label="Effective Date", - description=("Date when the content should become available " - "on the public site"), - label_msgid="label_effective_date", - description_msgid="help_effective_date", - i18n_domain="plone"), + label=_(u'label_effective_date', u'Effective Date'), + description=_(u'help_effective_date', + default=u"Date when the content should become " + "available on the public site"), + ), ), DateTimeField( 'expirationDate', mutator='setExpirationDate', languageIndependent = True, - #default=CEILING_DATE, widget=CalendarWidget( - label="Expiration Date", - description=("Date when the content should no longer be " - "visible on the public site"), - label_msgid="label_expiration_date", - description_msgid="help_expiration_date", - i18n_domain="plone"), + label=_(u'label_expiration_date', u'Expiration Date'), + description=_(u'help_expiration_date', + default=u"Date when the content should no longer " + "be visible on the public site"), + ), ), - StringField( 'language', accessor="Language", @@ -155,20 +139,17 @@ default_method ='defaultLanguage', vocabulary='languages', widget=SelectionWidget( - label='Language', - label_msgid="label_language", - description_msgid="help_language", - i18n_domain="plone"), + label=_(u'label_language', default=u'Language'), + ), ), TextField( 'rights', accessor="Rights", widget=TextAreaWidget( - label='Copyrights', - description="The copyrights on this item.", - label_msgid="label_copyrights", - description_msgid="help_copyrights", - i18n_domain="plone")), + label=_(u'label_copyrights', default=u'Copyrights'), + description=_(u'help_copyrights', + default=u'The copyrights on this item.'), + )), )) + Schema(( # XXX change this to MetadataSchema in AT 1.4 # Currently we want to stay backward compatible without migration @@ -184,11 +165,9 @@ schemata='metadata', generateMode='mVc', widget=CalendarWidget( - label="Creation Date", - description=("Date this object was created"), - label_msgid="label_creation_date", - description_msgid="help_creation_date", - i18n_domain="plone", + label=_(u'label_creation_date', default=u'Creation Date'), + description=_(u'help_creation_date', + default=u'Date this object was created'), visible={'edit':'invisible', 'view':'invisible'}), ), DateTimeField( @@ -201,11 +180,10 @@ schemata='metadata', generateMode='mVc', widget=CalendarWidget( - label="Modification Date", - description=("Date this content was modified last"), - label_msgid="label_modification_date", - description_msgid="help_modification_date", - i18n_domain="plone", + label=_(u'label_modification_date', + default=u'Modification Date'), + description=_(u'help_modification_date', + default=u'Date this content was modified last'), visible={'edit':'invisible', 'view':'invisible'}), ), )) Modified: Archetypes/trunk/HISTORY.txt ============================================================================== --- Archetypes/trunk/HISTORY.txt (original) +++ Archetypes/trunk/HISTORY.txt Thu Jun 29 02:34:32 2006 @@ -1,6 +1,10 @@ 1.5.0 - unreleased ================== + * Changed BaseObject and ExtensibleMetadata to use new Message approach for + internationalization of labels and descriptions. + [hannosch] + * Optimized the basic widget for the new default case of labels and descriptions as Messages. These are not translated automatically anymore but this is delayed to be triggered by the time they are rendered in a TAL Modified: Archetypes/trunk/TemplateMixin.py ============================================================================== --- Archetypes/trunk/TemplateMixin.py (original) +++ Archetypes/trunk/TemplateMixin.py Thu Jun 29 02:34:32 2006 @@ -1,3 +1,4 @@ +from Products.Archetypes import PloneMessageFactory as _ from Products.Archetypes.Schema import Schema from Products.Archetypes.Field import StringField from Products.Archetypes.Widget import SelectionWidget @@ -16,21 +17,16 @@ TemplateMixinSchema = Schema(( # TemplateMixin StringField('layout', - write_permission=permissions.ModifyPortalContent, - default_method="getDefaultLayout", - vocabulary="_voc_templates", - # we can't use enforce because we may use the view name from the - # type information - #enforceVocabulary=1, - widget=SelectionWidget(description="Choose a template that will be used for viewing this item.", - description_msgid = "help_template_mixin", - label = "View template", - label_msgid = "label_template_mixin", - i18n_domain = "plone", - visible={'view' : 'hidden', - 'edit' : 'visible' - }, - )), + write_permission=permissions.ModifyPortalContent, + default_method="getDefaultLayout", + vocabulary="_voc_templates", + widget=SelectionWidget(label = _(u'label_template_mixin', + default=u'View template'), + description=_(u'help_template_mixin', + default=u'Choose a template that will be used for viewing this item.'), + visible={'view' : 'hidden', + 'edit' : 'visible'},) + ), )) @@ -125,7 +121,6 @@ else: return pt - InitializeClass(TemplateMixin) # BBB backward compatibility Modified: Archetypes/trunk/__init__.py ============================================================================== --- Archetypes/trunk/__init__.py (original) +++ Archetypes/trunk/__init__.py Thu Jun 29 02:34:32 2006 @@ -35,6 +35,11 @@ from PloneCompat import transaction_note ModuleSecurityInfo('Products.Archetypes').declarePublic('transaction_note') +# Import "PloneMessageFactory as _" to create messages in plone domain +# duplicated here so we don't add a dependency on CMFPlone +from zope.i18nmessageid import MessageFactory +PloneMessageFactory = MessageFactory('plone') + # make DisplayList accessible from python scripts and others objects executed # in a restricted environment allow_class(DisplayList) Modified: Archetypes/trunk/docs/quickref.rst ============================================================================== --- Archetypes/trunk/docs/quickref.rst (original) +++ Archetypes/trunk/docs/quickref.rst Thu Jun 29 02:34:32 2006 @@ -56,11 +56,12 @@ - Plone 2.x -- CMF 1.4.x +- CMF 1.x -You should install the *PortalTransforms*, *MimetypeRegistry*, *validation* -and *generator* packages available in the archetypes repository (see above) -before installing Archetypes itself. +You should install the *PortalTransforms*, *MimetypeRegistry* and *validation* +packages available in the archetypes repository (see above) before installing +Archetypes itself. + The easiest way to get all the necessary packages is to download the tarball made available upon release or check out the *bundle* from the repository to fetch the latest development release. For example, this is tarball containing @@ -73,8 +74,7 @@ 2. Decompress it --- it should contain the following directories:: - Archetypes generator MimetypesRegistry PortalTransforms - validation + Archetypes MimetypesRegistry PortalTransforms validation 3. Copy these into the ``Products`` directory of your Zope installation. @@ -464,15 +464,9 @@ Some documentation for this field. It's rendered as a ``div`` with the CSS class ``formHelp``. -description_msgid - i18n id for the description. - label Is used as the label for the field when rendering the form. -label_msgid - i18n id for the label. - visible Defaults to ``{'edit':'visible', 'view':'visible'}``, which signifies that the field should be visible in both *edit* and *view* modes. Modified: Archetypes/trunk/tests/test_baseschema.py ============================================================================== --- Archetypes/trunk/tests/test_baseschema.py (original) +++ Archetypes/trunk/tests/test_baseschema.py Thu Jun 29 02:34:32 2006 @@ -37,6 +37,7 @@ # need this to initialize new BU for tests from Products.Archetypes.tests.test_classgen import Dummy +from Products.Archetypes import PloneMessageFactory as _ from Products.Archetypes.atapi import * from Products.Archetypes.config import PKG_NAME, LANGUAGE_DEFAULT from Products.Archetypes.interfaces.layer import ILayerContainer @@ -130,14 +131,17 @@ def test_allowdiscussion(self): dummy = self._dummy field = dummy.getField('allowDiscussion') + + vocabulary=DisplayList(( + ('None', _(u'label_discussion_default', default=u'Default')), + ('1', _(u'label_discussion_enabled', default=u'Enabled')), + ('0', _(u'label_discussion_disabled', default=u'Disabled')))) self.failUnless(ILayerContainer.isImplementedBy(field)) self.failUnless(field.required == 0) self.failUnless(field.default == None) self.failUnless(field.searchable == 0) - self.failUnless(field.vocabulary == DisplayList((('0', 'Disabled'), - ('1', 'Enabled'), - ('None', 'Default')))) + self.failUnless(field.vocabulary == vocabulary) self.failUnless(field.enforceVocabulary == 1) self.failUnless(field.multiValued == 0) self.failUnless(field.isMetadata == 1) @@ -156,9 +160,7 @@ self.failUnless(isinstance(field.widget, SelectionWidget)) vocab = field.Vocabulary(dummy) self.failUnless(isinstance(vocab, DisplayList)) - self.failUnless(vocab == DisplayList((('0', 'Disabled'), - ('1', 'Enabled'), - ('None', 'Default')))) + self.failUnless(field.vocabulary == vocabulary) def test_subject(self): dummy = self._dummy |