Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/__init__.py
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/__init__.py	(revision 1462)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/__init__.py	(revision 1463)
@@ -1,4 +1,5 @@
 from AccessControl import allow_module
 from zope.component import queryMultiAdapter
+from zope.i18nmessageid import MessageFactory
 
 from Acquisition import aq_inner
@@ -9,4 +10,6 @@
 from quintagroup.seoptimizer.interfaces import IKeywords, IMappingMetaTags
 from quintagroup.seoptimizer.util import SortedDict
+
+SeoptimizerMessageFactory = MessageFactory('quintagroup.seoptimizer')
 
 allow_module('quintagroup.seoptimizer.util')
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/configure.zcml
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/configure.zcml	(revision 1462)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/configure.zcml	(revision 1463)
@@ -1,5 +1,7 @@
 <configure
     xmlns="http://namespaces.zope.org/zope"
-    xmlns:browser="http://namespaces.zope.org/browser">
+    xmlns:browser="http://namespaces.zope.org/browser"
+    xmlns:i18n="http://namespaces.zope.org/i18n"
+    i18n_domain="quintagroup.seoptimizer">
 
     <!-- The customized title -->
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/keywords.py
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/keywords.py	(revision 1462)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/keywords.py	(revision 1463)
@@ -6,7 +6,7 @@
 
 from Products.CMFCore.utils import getToolByName
-from Products.CMFPlone import PloneMessageFactory as _
 
 from interfaces import IValidateSEOKeywordsView
+from quintagroup.seoptimizer import SeoptimizerMessageFactory as _
 
 class ValidateSEOKeywordsView(BrowserView):
@@ -17,5 +17,4 @@
         """ see interface """
         # extract keywords from text
-        import pdb;pdb.set_trace()
         if not text.strip():
             return _(u'Keywords list is empty!')
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/templates/seo_context_properties.pt
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/templates/seo_context_properties.pt	(revision 1462)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/templates/seo_context_properties.pt	(revision 1463)
@@ -4,4 +4,5 @@
       lang="en-US"
       metal:use-macro="here/main_template/macros/master"
+      xmlns:i18n="http://xml.zope.org/namespaces/i18n"
       i18n:domain="quintagroup.seoptimizer">
   <metal:border fill-slot="top_slot">
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/templates/seo_controlpanel.pt
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/templates/seo_controlpanel.pt	(revision 1462)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/templates/seo_controlpanel.pt	(revision 1463)
@@ -4,4 +4,5 @@
       lang="en-US"
       metal:use-macro="here/prefs_main_template/macros/master"
+      xmlns:i18n="http://xml.zope.org/namespaces/i18n"
       i18n:domain="quintagroup.seoptimizer">
   <body>
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/views.py
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/views.py	(revision 1462)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/views.py	(revision 1463)
@@ -6,4 +6,6 @@
 from Products.CMFCore.utils import getToolByName
 from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
+
+from quintagroup.seoptimizer import SeoptimizerMessageFactory as _
 
 SEPERATOR = '|'
@@ -281,5 +283,5 @@
                         ptype.addAction('seo_properties',
                                         'SEO Properties',
-                                        'string:${object_url}/qseo_properties_edit_form',
+                                        'string:${object_url}/@@seo-context-properties',
                                         '',
                                         'Modify portal content',
@@ -337,6 +339,6 @@
     def setSEOCustomMetaTags(self, custommetatags):
         context = aq_inner(self.context)
-        for k, v in custommetatags.items():
-            self.setProperty('%s%s' % (PROP_CUSTOM_PREFIX, meta_name), meta_content)   
+        for tag in custommetatags:
+            self.setProperty('%s%s' % (PROP_CUSTOM_PREFIX, tag['meta_name']), tag['meta_content'])
 
     def delAllSEOCustomMetaTagsByNames(self):
@@ -366,12 +368,11 @@
                     globalCustomMetaTags.append({'meta_name'    : name_value[0],
                                                  'meta_content' : len(name_value) == 1 and '' or name_value[1]})
-  
+        metalist = []
         for tag in custommetatags:
-            metalist = []
             meta_name, meta_content = tag['meta_name'], tag['meta_content']
             if meta_name:
                 if not [gmt for gmt in globalCustomMetaTags if (gmt['meta_name']==meta_name and gmt['meta_content']==meta_content)]:
                     metalist.append(tag)
-                self.setSEOCustomMetaTags(metalist)
+        if metalist: self.setSEOCustomMetaTags(metalist)
       
     def manageSEOCustomMetaTags(self, **kw):
@@ -396,6 +397,5 @@
             self.manageSEOProps(**form)
             self.manageSEOCustomMetaTags(**form)
-            msg = 'Content SEO properties have been saved.'
-            context.plone_utils.addPortalMessage(msg)
+            context.plone_utils.addPortalMessage( _(u'Content SEO properties have been saved.'))
             return request.response.redirect(self.context.absolute_url())
         else:
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/configure.zcml
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/configure.zcml	(revision 1462)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/configure.zcml	(revision 1463)
@@ -4,5 +4,8 @@
     xmlns:browser="http://namespaces.zope.org/browser"
     xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
-    xmlns:cmf="http://namespaces.zope.org/cmf">
+    xmlns:cmf="http://namespaces.zope.org/cmf"
+    xmlns:i18n="http://namespaces.zope.org/i18n"
+    i18n_domain="quintagroup.seoptimizer">
+
 
   <five:registerPackage package="." />
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/overrides.zcml
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/overrides.zcml	(revision 1462)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/overrides.zcml	(revision 1463)
@@ -1,5 +1,8 @@
 <configure
     xmlns="http://namespaces.zope.org/zope"
-    xmlns:zcml="http://namespaces.zope.org/zcml">
+    xmlns:zcml="http://namespaces.zope.org/zcml"
+    xmlns:i18n="http://namespaces.zope.org/i18n"
+    i18n_domain="quintagroup.seoptimizer">
+
     <include zcml:condition="installed plone.app.viewletmanager"
              package=".browser" />
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/controlpanel.xml
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/controlpanel.xml	(revision 1462)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/controlpanel.xml	(revision 1463)
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
 <object name="portal_controlpanel" meta_type="Plone Control Panel Tool"
-    xmlns:i18n="http://xml.zope.org/namespaces/i18n" i18n:domain="plone">
+    xmlns:i18n="http://xml.zope.org/namespaces/i18n" i18n:domain="quintagroup.seoptimizer">
  <configlet title="Search Engine Optimizer" action_id="quintagroup.seoptimizer"
     appId="quintagroup.seoptimizer" category="Products" condition_expr=""
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/Document.xml
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/Document.xml	(revision 1462)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/Document.xml	(revision 1463)
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <object name="Document" meta_type="Factory-based Type Information with dynamic views"
-   i18n:domain="plone" xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+   i18n:domain="quintagroup.seoptimizer"  xmlns:i18n="http://xml.zope.org/namespaces/i18n">
  <action title="SEO Properties" action_id="seo_properties" category="object" condition_expr=""
-    url_expr="string:${object_url}/qseo_properties_edit_form" visible="True"
+    url_expr="string:${object_url}/@@seo-context-properties" visible="True"
     i18n:attributes="">
   <permission value="Modify portal content"/>
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/File.xml
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/File.xml	(revision 1462)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/File.xml	(revision 1463)
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <object name="File" meta_type="Factory-based Type Information with dynamic views"
-   i18n:domain="plone" xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+   i18n:domain="quintagroup.seoptimizer"  xmlns:i18n="http://xml.zope.org/namespaces/i18n">
  <action title="SEO Properties" action_id="seo_properties" category="object" condition_expr=""
-    url_expr="string:${object_url}/qseo_properties_edit_form" visible="True"
+    url_expr="string:${object_url}/@@seo-context-properties" visible="True"
     i18n:attributes="">
   <permission value="Modify portal content"/>
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/News_Item.xml
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/News_Item.xml	(revision 1462)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/News_Item.xml	(revision 1463)
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <object name="News Item" meta_type="Factory-based Type Information with dynamic views"
-   i18n:domain="plone" xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+   i18n:domain="quintagroup.seoptimizer"  xmlns:i18n="http://xml.zope.org/namespaces/i18n">
  <action title="SEO Properties" action_id="seo_properties" category="object" condition_expr=""
-    url_expr="string:${object_url}/qseo_properties_edit_form" visible="True"
+    url_expr="string:${object_url}/@@seo-context-properties" visible="True"
     i18n:attributes="">
   <permission value="Modify portal content"/>
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/skins/quintagroup.seoptimizer/validate_qseo_properties.vpy
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/skins/quintagroup.seoptimizer/validate_qseo_properties.vpy	(revision 1462)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/skins/quintagroup.seoptimizer/validate_qseo_properties.vpy	(revision 1463)
@@ -10,6 +10,5 @@
 
 from Products.CMFCore.utils import getToolByName
-from Products.CMFPlone import MessageFactory
-_ = MessageFactory('seoptimizer')
+from quintagroup.seoptimizer import SeoptimizerMessageFactory as _
 
 def getMainDomain(url):
