[Checkins] SVN: zc.datetimewidget/trunk/src/zc/datetimewidget/ languages are now switched as specified by the locale if available

Bernd Dorn bernd.dorn at fhv.at
Sun Apr 30 11:25:19 EDT 2006


Log message for revision 67766:
  languages are now switched as specified by the locale if available

Changed:
  U   zc.datetimewidget/trunk/src/zc/datetimewidget/configure.zcml
  U   zc.datetimewidget/trunk/src/zc/datetimewidget/datetimewidget.py
  A   zc.datetimewidget/trunk/src/zc/datetimewidget/resources/datetimewidget.js

-=-
Modified: zc.datetimewidget/trunk/src/zc/datetimewidget/configure.zcml
===================================================================
--- zc.datetimewidget/trunk/src/zc/datetimewidget/configure.zcml	2006-04-30 14:43:30 UTC (rev 67765)
+++ zc.datetimewidget/trunk/src/zc/datetimewidget/configure.zcml	2006-04-30 15:25:18 UTC (rev 67766)
@@ -8,7 +8,8 @@
   <resourceLibrary name="zc.datetimewidget" layer="default">
     <directory
         source="resources"
-        include="calendar-system.css calendar.js lang/calendar-en.js 
+        include="calendar-system.css calendar.js datetimewidget.js
+                 lang/calendar-en.js
                  calendar-setup.js"/>
   </resourceLibrary>
 

Modified: zc.datetimewidget/trunk/src/zc/datetimewidget/datetimewidget.py
===================================================================
--- zc.datetimewidget/trunk/src/zc/datetimewidget/datetimewidget.py	2006-04-30 14:43:30 UTC (rev 67765)
+++ zc.datetimewidget/trunk/src/zc/datetimewidget/datetimewidget.py	2006-04-30 15:25:18 UTC (rev 67766)
@@ -26,7 +26,16 @@
 import zope.datetime
 import zc.i18n.date
 import zc.resourcelibrary
+import glob
+import os
 
+
+# initialize the language files
+LANGS = []
+for langFile in glob.glob(
+    os.path.join(os.path.dirname(__file__),'resources','lang') + '/calendar-??.js'):
+    LANGS.append(os.path.basename(langFile)[9:11])
+
 def normalizeDateTime(dt, request):
     if dt is not None:
         if (dt.tzinfo is not None and
@@ -51,6 +60,7 @@
 %(widget_html)s
 <input type="button" value="..." id="%(name)s_trigger">
 <script type="text/javascript">
+  %(langDef)s
   Calendar.setup(
     {
       inputField: "%(name)s", // ID of the input field
@@ -67,11 +77,22 @@
 
     def __call__(self):
         zc.resourcelibrary.need('zc.datetimewidget')
+        lang = self.request.locale.id.language
+        lang = lang in LANGS and lang or 'en'
+        if lang != 'en':
+            # en is always loadad via the resourcelibrary, so that all
+            # variables are defined in js
+            # TODO: do not hardcode this
+            langFile = '/@@/zc.datetimewidget/lang/calendar-%s.js' % lang
+            langDef = "dateTimeWidgetLoadLanguageFile('%s');" % langFile
+        else:
+            langDef = ''
         widget_html = super(DatetimeBase, self).__call__()
         return template % {"widget_html": widget_html,
                            "name": self.name,
                            "showsTime": self._showsTime,
-                           "datetime_format": self._format}
+                           "datetime_format": self._format,
+                           "langDef":langDef}
 
 class DatetimeWidget(DatetimeBase, textwidgets.DatetimeWidget):
     """Datetime entry widget."""

Added: zc.datetimewidget/trunk/src/zc/datetimewidget/resources/datetimewidget.js
===================================================================
--- zc.datetimewidget/trunk/src/zc/datetimewidget/resources/datetimewidget.js	2006-04-30 14:43:30 UTC (rev 67765)
+++ zc.datetimewidget/trunk/src/zc/datetimewidget/resources/datetimewidget.js	2006-04-30 15:25:18 UTC (rev 67766)
@@ -0,0 +1,18 @@
+var dtwLanguageLoaded = false;
+
+function dateTimeWidgetLoadLanguageFile(url){
+
+    // this method loads a languagefile for the datetimewidget
+    // TODO: move this functinality into zc.resourcelibrary
+    
+    if (dtwLanguageLoaded==true){
+        return;
+    }
+    var script = document.createElement('script');
+    script.type = 'text/javascript';
+    script.src = url;
+    document.getElementsByTagName('head')[0].appendChild(script);
+    dtwLanguageLoaded = true;
+}
+
+



More information about the Checkins mailing list