Author: chrisz
Date: Mon Jan 28 09:33:26 2008
New Revision: 4063
URL: http://trac.turbogears.org/changeset/4063
Log:
Small improvements in CalendarLangFileLink. Added calendar lang files for
German regions.
Added:
branches/1.0/turbogears/widgets/static/calendar/lang/calendar-de_at.js
(contents, props changed)
branches/1.0/turbogears/widgets/static/calendar/lang/calendar-de_de.js
(contents, props changed)
branches/1.0/turbogears/widgets/static/calendar/lang/calendar-pt_br.js
- copied unchanged from r4061,
/branches/1.0/turbogears/widgets/static/calendar/lang/calendar-pt-br.js
branches/1.0/turbogears/widgets/static/calendar/lang/calendar-zh_cn-gbk.js
- copied unchanged from r4061,
/branches/1.0/turbogears/widgets/static/calendar/lang/calendar-zh-cn-gbk.js
branches/1.0/turbogears/widgets/static/calendar/lang/calendar-zh_cn.js
- copied unchanged from r4061,
/branches/1.0/turbogears/widgets/static/calendar/lang/calendar-zh-cn.js
branches/1.0/turbogears/widgets/static/calendar/lang/calendar-zh_tw-big5.js
- copied unchanged from r4061,
/branches/1.0/turbogears/widgets/static/calendar/lang/calendar-zh-tw-big5.js
branches/1.0/turbogears/widgets/static/calendar/lang/calendar-zh_tw.js
- copied unchanged from r4061,
/branches/1.0/turbogears/widgets/static/calendar/lang/calendar-zh-tw.js
branches/1.1/turbogears/widgets/static/calendar/lang/calendar-de_at.js
(contents, props changed)
branches/1.1/turbogears/widgets/static/calendar/lang/calendar-de_de.js
(contents, props changed)
branches/1.1/turbogears/widgets/static/calendar/lang/calendar-pt_br.js
- copied unchanged from r4061,
/branches/1.1/turbogears/widgets/static/calendar/lang/calendar-pt-br.js
branches/1.1/turbogears/widgets/static/calendar/lang/calendar-zh_cn-gbk.js
- copied unchanged from r4061,
/branches/1.1/turbogears/widgets/static/calendar/lang/calendar-zh-cn-gbk.js
branches/1.1/turbogears/widgets/static/calendar/lang/calendar-zh_cn.js
- copied unchanged from r4061,
/branches/1.1/turbogears/widgets/static/calendar/lang/calendar-zh-cn.js
branches/1.1/turbogears/widgets/static/calendar/lang/calendar-zh_tw-big5.js
- copied unchanged from r4061,
/branches/1.1/turbogears/widgets/static/calendar/lang/calendar-zh-tw-big5.js
branches/1.1/turbogears/widgets/static/calendar/lang/calendar-zh_tw.js
- copied unchanged from r4061,
/branches/1.1/turbogears/widgets/static/calendar/lang/calendar-zh-tw.js
Removed:
branches/1.0/turbogears/widgets/static/calendar/lang/calendar-pt-br.js
branches/1.0/turbogears/widgets/static/calendar/lang/calendar-zh-cn-gbk.js
branches/1.0/turbogears/widgets/static/calendar/lang/calendar-zh-cn.js
branches/1.0/turbogears/widgets/static/calendar/lang/calendar-zh-tw-big5.js
branches/1.0/turbogears/widgets/static/calendar/lang/calendar-zh-tw.js
branches/1.1/turbogears/widgets/static/calendar/lang/calendar-pt-br.js
branches/1.1/turbogears/widgets/static/calendar/lang/calendar-zh-cn-gbk.js
branches/1.1/turbogears/widgets/static/calendar/lang/calendar-zh-cn.js
branches/1.1/turbogears/widgets/static/calendar/lang/calendar-zh-tw-big5.js
branches/1.1/turbogears/widgets/static/calendar/lang/calendar-zh-tw.js
Modified:
branches/1.0/turbogears/widgets/i18n.py
branches/1.1/turbogears/widgets/i18n.py
Modified: branches/1.0/turbogears/widgets/i18n.py
==============================================================================
--- branches/1.0/turbogears/widgets/i18n.py (original)
+++ branches/1.0/turbogears/widgets/i18n.py Mon Jan 28 09:33:26 2008
@@ -45,54 +45,75 @@
for_widget = LocalizableJSLink("turbogears", "js/yourscript-%(lang)s.js")
+_norm_tag = ''.join([(c.islower() or c.isdigit() or c == '-')
+ and c or c.isupper() and c.lower() or ' '
+ for c in map(chr, xrange(256))])
+
+def norm_tag(tag):
+ """Normalize string to alphanumeric ascii chars, hypens and underscores.
+
+ The length is limited to 16 characters and other characters are
+ collapsed to single underscore, or ignored at the start or end.
+
+ """
+ if tag is not None:
+ return '_'.join(str(tag)[:16].translate(_norm_tag).split())
+
+
+def norm_charset(charset):
+ """Normalize the name of a character set."""
+ if charset is not None:
+ charset = norm_tag(charset)
+ try:
+ charset = norm_tag(codecs.lookup(charset).name)
+ except (LookupError, AttributeError, ValueError):
+ # AttributeError and ValueError only needed for Py 2.3
+ pass
+ return charset
+
+
class CalendarLangFileLink(LocalizableJSLink):
"""Links to proper calendar.js language file depending on HTTP info."""
default_charset = 'utf-8'
def update_params(self, d):
- accept_language = parse_http_accept_header(
+ languages = parse_http_accept_header(
request.headers.get("Accept-Language")) or []
language = d.get('language')
if language and language != '*':
- accept_language.insert(0, language)
- def norm_language(language):
- return language.lower()
- accept_language = map(norm_language, accept_language)
- accept_language.append(self.default_language)
- accept_charset = parse_http_accept_header(
+ languages.insert(0, language)
+ languages = map(norm_tag, languages)
+ default_language = norm_tag(self.default_language)
+ languages.append(default_language)
+ charsets = parse_http_accept_header(
request.headers.get("Accept-Charset")) or []
- def norm_charset(charset):
- try:
- return codecs.lookup(charset).name
- except (LookupError, AttributeError, ValueError):
- # AttributeError and ValueError only needed for Py 2.3
- return charset.lower()
- charset = config.get("kid.encoding", self.default_charset)
- if charset != self.default_charset:
- accept_charset.append(charset)
- accept_charset = map(norm_charset, accept_charset)
- accept_charset.append(self.default_charset)
+ charsets = map(norm_charset, charsets)
+ default_charset = norm_charset(self.default_charset)
+ charset = norm_charset(config.get("kid.encoding"))
+ if charset and charset != default_charset:
+ charsets.append(charset)
+ charsets.append(default_charset)
path = "/tg_widgets/%s" % self.mod
base_dir = config.get("static_filter.dir", path=path)
base_name = "calendar/lang/calendar-"
def find_link():
params = dict()
- for lang in accept_language:
+ for lang in languages:
if not lang or lang == '*':
- lang = self.default_language
- base_lang = base_name + lang
- for charset in accept_charset:
+ lang = default_language
+ base_lang = base_name + lang.replace('-', '_')
+ for charset in charsets:
if not charset or charset == '*':
- charset = self.default_charset
+ charset = default_charset
file_name = base_lang
- if charset != self.default_charset:
- file_name += '-' + charset
+ if charset != default_charset:
+ file_name += '-' + charset.replace('-', '_')
file_name += '.js'
if os.path.exists(os.path.join(base_dir, file_name)):
path = "/%stg_widgets/%s" % (startup.webpath, self.mod)
link = "%s/%s" % (path, file_name)
return (link, language, charset)
- if charset == self.default_charset:
+ if charset == default_charset:
break
d["link"], d['language'], d['charset'] = find_link()
Added: branches/1.0/turbogears/widgets/static/calendar/lang/calendar-de_at.js
==============================================================================
--- (empty file)
+++ branches/1.0/turbogears/widgets/static/calendar/lang/calendar-de_at.js
Mon Jan 28 09:33:26 2008
@@ -0,0 +1,110 @@
+// Calendar i18n
+// Language: de-at (German, Austria)
+// Encoding: any
+// Author: Jack (tR), <[EMAIL PROTECTED]>
+// Distributed under the same terms as the calendar itself.
+
+// full day names
+Calendar._DN = new Array
+("Sonntag",
+ "Montag",
+ "Dienstag",
+ "Mittwoch",
+ "Donnerstag",
+ "Freitag",
+ "Samstag",
+ "Sonntag");
+
+// short day names
+Calendar._SDN = new Array
+("So",
+ "Mo",
+ "Di",
+ "Mi",
+ "Do",
+ "Fr",
+ "Sa",
+ "So");
+
+// First day of the week. "0" means display Sunday first.
+Calendar._FD = 0;
+
+// full month names
+Calendar._MN = new Array
+("J\xe4nner",
+ "Februar",
+ "M\xe4rz",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Dezember");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Feb",
+ "M\xe4r",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "\xDCber dieses Kalendermodul";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this
;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for
details." +
+"\n\n" +
+"Datum ausw\xe4hlen:\n" +
+"- Benutzen Sie die Kn\xf6pfe \xab und \xbb, um das Jahr auszuw\xe4hlen.\n" +
+"- Benutzen Sie die Kn\xf6pfe \u2039 und \u203a, um den Monat
auszuw\xe4hlen.\n" +
+"- Zur Schnellauswahl halten Sie die Maustaste \xfcber diesen Kn\xf6pfen
gedr\xfcckt.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Zeit ausw\xe4hlen:\n" +
+"- Klicken Sie auf die Teile der Uhrzeit, um diese zu erh\xF6hen,\n" +
+"- oder klicken Sie mit festgehaltener Umschalttaste, um diese zu
verringern,\n" +
+"- oder klicken und gedr\xfcckt halten zur Schnellauswahl.";
+
+Calendar._TT["TOGGLE"] = "Ersten Tag der Woche w\xe4hlen";
+Calendar._TT["PREV_YEAR"] = "Voriges Jahr (Auswahl: l\xe4nger klicken)";
+Calendar._TT["PREV_MONTH"] = "Voriger Monat (Auswahl: l\xe4nger klicken)";
+Calendar._TT["GO_TODAY"] = "Heute ausw\xe4hlen";
+Calendar._TT["NEXT_MONTH"] = "N\xe4chster Monat (Auswahl: l\xe4nger klicken)";
+Calendar._TT["NEXT_YEAR"] = "N\xe4chstes Jahr (Auswahl: l\xe4nger klicken)";
+Calendar._TT["SEL_DATE"] = "Datum ausw\xe4hlen";
+Calendar._TT["DRAG_TO_MOVE"] = "Zum Bewegen gedr\xfcckt halten";
+Calendar._TT["PART_TODAY"] = " (Heute)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Woche beginnt mit %s";
+
+// This may be locale-dependent. It specifies the week-end days, as an array
+// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Schlie\xdfen";
+Calendar._TT["TODAY"] = "Heute";
+Calendar._TT["TIME_PART"] = "(Umschalt-)Klick oder Festhalten und Ziehen, um
den Wert zu \xe4ndern";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %e. %b";
+
+Calendar._TT["WK"] = "KW";
+Calendar._TT["TIME"] = "Uhrzeit:";
Added: branches/1.0/turbogears/widgets/static/calendar/lang/calendar-de_de.js
==============================================================================
--- (empty file)
+++ branches/1.0/turbogears/widgets/static/calendar/lang/calendar-de_de.js
Mon Jan 28 09:33:26 2008
@@ -0,0 +1,110 @@
+// Calendar i18n
+// Language: de-de (German, Germany)
+// Encoding: any
+// Author: Jack (tR), <[EMAIL PROTECTED]>
+// Distributed under the same terms as the calendar itself.
+
+// full day names
+Calendar._DN = new Array
+("Sonntag",
+ "Montag",
+ "Dienstag",
+ "Mittwoch",
+ "Donnerstag",
+ "Freitag",
+ "Samstag",
+ "Sonntag");
+
+// short day names
+Calendar._SDN = new Array
+("So",
+ "Mo",
+ "Di",
+ "Mi",
+ "Do",
+ "Fr",
+ "Sa",
+ "So");
+
+// First day of the week. "0" means display Sunday first.
+Calendar._FD = 0;
+
+// full month names
+Calendar._MN = new Array
+("Januar",
+ "Februar",
+ "M\xe4rz",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Dezember");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Feb",
+ "M\xe4r",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "\xDCber dieses Kalendermodul";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this
;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for
details." +
+"\n\n" +
+"Datum ausw\xe4hlen:\n" +
+"- Benutzen Sie die Kn\xf6pfe \xab und \xbb, um das Jahr auszuw\xe4hlen.\n" +
+"- Benutzen Sie die Kn\xf6pfe \u2039 und \u203a, um den Monat
auszuw\xe4hlen.\n" +
+"- Zur Schnellauswahl halten Sie die Maustaste \xfcber diesen Kn\xf6pfen
gedr\xfcckt.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Zeit ausw\xe4hlen:\n" +
+"- Klicken Sie auf die Teile der Uhrzeit, um diese zu erh\xF6hen,\n" +
+"- oder klicken Sie mit festgehaltener Umschalttaste, um diese zu
verringern,\n" +
+"- oder klicken und gedr\xfcckt halten zur Schnellauswahl.";
+
+Calendar._TT["TOGGLE"] = "Ersten Tag der Woche w\xe4hlen";
+Calendar._TT["PREV_YEAR"] = "Voriges Jahr (Auswahl: l\xe4nger klicken)";
+Calendar._TT["PREV_MONTH"] = "Voriger Monat (Auswahl: l\xe4nger klicken)";
+Calendar._TT["GO_TODAY"] = "Heute ausw\xe4hlen";
+Calendar._TT["NEXT_MONTH"] = "N\xe4chster Monat (Auswahl: l\xe4nger klicken)";
+Calendar._TT["NEXT_YEAR"] = "N\xe4chstes Jahr (Auswahl: l\xe4nger klicken)";
+Calendar._TT["SEL_DATE"] = "Datum ausw\xe4hlen";
+Calendar._TT["DRAG_TO_MOVE"] = "Zum Bewegen gedr\xfcckt halten";
+Calendar._TT["PART_TODAY"] = " (Heute)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Woche beginnt mit %s";
+
+// This may be locale-dependent. It specifies the week-end days, as an array
+// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Schlie\xdfen";
+Calendar._TT["TODAY"] = "Heute";
+Calendar._TT["TIME_PART"] = "(Umschalt-)Klick oder Festhalten und Ziehen, um
den Wert zu \xe4ndern";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %e. %b";
+
+Calendar._TT["WK"] = "KW";
+Calendar._TT["TIME"] = "Uhrzeit:";
Modified: branches/1.1/turbogears/widgets/i18n.py
==============================================================================
--- branches/1.1/turbogears/widgets/i18n.py (original)
+++ branches/1.1/turbogears/widgets/i18n.py Mon Jan 28 09:33:26 2008
@@ -45,54 +45,74 @@
for_widget = LocalizableJSLink("turbogears", "js/yourscript-%(lang)s.js")
+_norm_tag = ''.join([(c.islower() or c.isdigit() or c == '-')
+ and c or c.isupper() and c.lower() or ' '
+ for c in map(chr, xrange(256))])
+
+def norm_tag(tag):
+ """Normalize string to alphanumeric ascii chars, hypens and underscores.
+
+ The length is limited to 16 characters and other characters are
+ collapsed to single underscore, or ignored at the start or end.
+
+ """
+ if tag is not None:
+ return '_'.join(str(tag)[:16].translate(_norm_tag).split())
+
+
+def norm_charset(charset):
+ """Normalize the name of a character set."""
+ if charset is not None:
+ charset = norm_tag(charset)
+ try:
+ charset = norm_tag(codecs.lookup(charset).name)
+ except LookupError:
+ pass
+ return charset
+
+
class CalendarLangFileLink(LocalizableJSLink):
"""Links to proper calendar.js language file depending on HTTP info."""
default_charset = 'utf-8'
def update_params(self, d):
- accept_language = parse_http_accept_header(
+ languages = parse_http_accept_header(
request.headers.get("Accept-Language")) or []
language = d.get('language')
if language and language != '*':
- accept_language.insert(0, language)
- def norm_language(language):
- return language.lower()
- accept_language = map(norm_language, accept_language)
- accept_language.append(self.default_language)
- accept_charset = parse_http_accept_header(
+ languages.insert(0, language)
+ languages = map(norm_tag, languages)
+ default_language = norm_tag(self.default_language)
+ languages.append(default_language)
+ charsets = parse_http_accept_header(
request.headers.get("Accept-Charset")) or []
- def norm_charset(charset):
- try:
- return codecs.lookup(charset).name
- except (LookupError, AttributeError, ValueError):
- # AttributeError and ValueError only needed for Py 2.3
- return charset.lower()
- charset = config.get("kid.encoding", self.default_charset)
- if charset != self.default_charset:
- accept_charset.append(charset)
- accept_charset = map(norm_charset, accept_charset)
- accept_charset.append(self.default_charset)
+ charsets = map(norm_charset, charsets)
+ default_charset = norm_charset(self.default_charset)
+ charset = norm_charset(config.get("kid.encoding"))
+ if charset and charset != default_charset:
+ charsets.append(charset)
+ charsets.append(default_charset)
path = "/tg_widgets/%s" % self.mod
base_dir = config.get("static_filter.dir", path=path)
base_name = "calendar/lang/calendar-"
def find_link():
params = dict()
- for lang in accept_language:
+ for lang in languages:
if not lang or lang == '*':
- lang = self.default_language
- base_lang = base_name + lang
- for charset in accept_charset:
+ lang = default_language
+ base_lang = base_name + lang.replace('-', '_')
+ for charset in charsets:
if not charset or charset == '*':
- charset = self.default_charset
+ charset = default_charset
file_name = base_lang
- if charset != self.default_charset:
- file_name += '-' + charset
+ if charset != default_charset:
+ file_name += '-' + charset.replace('-', '_')
file_name += '.js'
if os.path.exists(os.path.join(base_dir, file_name)):
path = "/%stg_widgets/%s" % (startup.webpath, self.mod)
link = "%s/%s" % (path, file_name)
return (link, language, charset)
- if charset == self.default_charset:
+ if charset == default_charset:
break
d["link"], d['language'], d['charset'] = find_link()
Added: branches/1.1/turbogears/widgets/static/calendar/lang/calendar-de_at.js
==============================================================================
--- (empty file)
+++ branches/1.1/turbogears/widgets/static/calendar/lang/calendar-de_at.js
Mon Jan 28 09:33:26 2008
@@ -0,0 +1,110 @@
+// Calendar i18n
+// Language: de-at (German, Austria)
+// Encoding: any
+// Author: Jack (tR), <[EMAIL PROTECTED]>
+// Distributed under the same terms as the calendar itself.
+
+// full day names
+Calendar._DN = new Array
+("Sonntag",
+ "Montag",
+ "Dienstag",
+ "Mittwoch",
+ "Donnerstag",
+ "Freitag",
+ "Samstag",
+ "Sonntag");
+
+// short day names
+Calendar._SDN = new Array
+("So",
+ "Mo",
+ "Di",
+ "Mi",
+ "Do",
+ "Fr",
+ "Sa",
+ "So");
+
+// First day of the week. "0" means display Sunday first.
+Calendar._FD = 0;
+
+// full month names
+Calendar._MN = new Array
+("J\xe4nner",
+ "Februar",
+ "M\xe4rz",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Dezember");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Feb",
+ "M\xe4r",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "\xDCber dieses Kalendermodul";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this
;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for
details." +
+"\n\n" +
+"Datum ausw\xe4hlen:\n" +
+"- Benutzen Sie die Kn\xf6pfe \xab und \xbb, um das Jahr auszuw\xe4hlen.\n" +
+"- Benutzen Sie die Kn\xf6pfe \u2039 und \u203a, um den Monat
auszuw\xe4hlen.\n" +
+"- Zur Schnellauswahl halten Sie die Maustaste \xfcber diesen Kn\xf6pfen
gedr\xfcckt.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Zeit ausw\xe4hlen:\n" +
+"- Klicken Sie auf die Teile der Uhrzeit, um diese zu erh\xF6hen,\n" +
+"- oder klicken Sie mit festgehaltener Umschalttaste, um diese zu
verringern,\n" +
+"- oder klicken und gedr\xfcckt halten zur Schnellauswahl.";
+
+Calendar._TT["TOGGLE"] = "Ersten Tag der Woche w\xe4hlen";
+Calendar._TT["PREV_YEAR"] = "Voriges Jahr (Auswahl: l\xe4nger klicken)";
+Calendar._TT["PREV_MONTH"] = "Voriger Monat (Auswahl: l\xe4nger klicken)";
+Calendar._TT["GO_TODAY"] = "Heute ausw\xe4hlen";
+Calendar._TT["NEXT_MONTH"] = "N\xe4chster Monat (Auswahl: l\xe4nger klicken)";
+Calendar._TT["NEXT_YEAR"] = "N\xe4chstes Jahr (Auswahl: l\xe4nger klicken)";
+Calendar._TT["SEL_DATE"] = "Datum ausw\xe4hlen";
+Calendar._TT["DRAG_TO_MOVE"] = "Zum Bewegen gedr\xfcckt halten";
+Calendar._TT["PART_TODAY"] = " (Heute)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Woche beginnt mit %s";
+
+// This may be locale-dependent. It specifies the week-end days, as an array
+// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Schlie\xdfen";
+Calendar._TT["TODAY"] = "Heute";
+Calendar._TT["TIME_PART"] = "(Umschalt-)Klick oder Festhalten und Ziehen, um
den Wert zu \xe4ndern";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %e. %b";
+
+Calendar._TT["WK"] = "KW";
+Calendar._TT["TIME"] = "Uhrzeit:";
Added: branches/1.1/turbogears/widgets/static/calendar/lang/calendar-de_de.js
==============================================================================
--- (empty file)
+++ branches/1.1/turbogears/widgets/static/calendar/lang/calendar-de_de.js
Mon Jan 28 09:33:26 2008
@@ -0,0 +1,110 @@
+// Calendar i18n
+// Language: de-de (German, Germany)
+// Encoding: any
+// Author: Jack (tR), <[EMAIL PROTECTED]>
+// Distributed under the same terms as the calendar itself.
+
+// full day names
+Calendar._DN = new Array
+("Sonntag",
+ "Montag",
+ "Dienstag",
+ "Mittwoch",
+ "Donnerstag",
+ "Freitag",
+ "Samstag",
+ "Sonntag");
+
+// short day names
+Calendar._SDN = new Array
+("So",
+ "Mo",
+ "Di",
+ "Mi",
+ "Do",
+ "Fr",
+ "Sa",
+ "So");
+
+// First day of the week. "0" means display Sunday first.
+Calendar._FD = 0;
+
+// full month names
+Calendar._MN = new Array
+("Januar",
+ "Februar",
+ "M\xe4rz",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Dezember");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Feb",
+ "M\xe4r",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "\xDCber dieses Kalendermodul";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this
;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for
details." +
+"\n\n" +
+"Datum ausw\xe4hlen:\n" +
+"- Benutzen Sie die Kn\xf6pfe \xab und \xbb, um das Jahr auszuw\xe4hlen.\n" +
+"- Benutzen Sie die Kn\xf6pfe \u2039 und \u203a, um den Monat
auszuw\xe4hlen.\n" +
+"- Zur Schnellauswahl halten Sie die Maustaste \xfcber diesen Kn\xf6pfen
gedr\xfcckt.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Zeit ausw\xe4hlen:\n" +
+"- Klicken Sie auf die Teile der Uhrzeit, um diese zu erh\xF6hen,\n" +
+"- oder klicken Sie mit festgehaltener Umschalttaste, um diese zu
verringern,\n" +
+"- oder klicken und gedr\xfcckt halten zur Schnellauswahl.";
+
+Calendar._TT["TOGGLE"] = "Ersten Tag der Woche w\xe4hlen";
+Calendar._TT["PREV_YEAR"] = "Voriges Jahr (Auswahl: l\xe4nger klicken)";
+Calendar._TT["PREV_MONTH"] = "Voriger Monat (Auswahl: l\xe4nger klicken)";
+Calendar._TT["GO_TODAY"] = "Heute ausw\xe4hlen";
+Calendar._TT["NEXT_MONTH"] = "N\xe4chster Monat (Auswahl: l\xe4nger klicken)";
+Calendar._TT["NEXT_YEAR"] = "N\xe4chstes Jahr (Auswahl: l\xe4nger klicken)";
+Calendar._TT["SEL_DATE"] = "Datum ausw\xe4hlen";
+Calendar._TT["DRAG_TO_MOVE"] = "Zum Bewegen gedr\xfcckt halten";
+Calendar._TT["PART_TODAY"] = " (Heute)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Woche beginnt mit %s";
+
+// This may be locale-dependent. It specifies the week-end days, as an array
+// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Schlie\xdfen";
+Calendar._TT["TODAY"] = "Heute";
+Calendar._TT["TIME_PART"] = "(Umschalt-)Klick oder Festhalten und Ziehen, um
den Wert zu \xe4ndern";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %e. %b";
+
+Calendar._TT["WK"] = "KW";
+Calendar._TT["TIME"] = "Uhrzeit:";