From c03bd7e8acd1647a58926721e1f19f023675bfa2 Mon Sep 17 00:00:00 2001 From: helmutm Date: Mon, 17 Dec 2007 10:21:16 +0000 Subject: [PATCH] show translations on glossary and glossary items git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2257 fd906abe-77d9-0310-91a1-e0d9ade77398 --- browser/action.py | 2 ++ browser/form.py | 3 ++- i18n/README.txt | 6 ++++++ i18n/common.py | 12 ++++++++++++ knowledge/glossary/browser.py | 3 +++ knowledge/glossary/view_macros.pt | 23 ++++++++++++++++++++++- locales/de/LC_MESSAGES/loops.mo | Bin 3952 -> 4006 bytes locales/de/LC_MESSAGES/loops.po | 9 ++++++--- 8 files changed, 53 insertions(+), 5 deletions(-) diff --git a/browser/action.py b/browser/action.py index 3428ee8..b1ab948 100644 --- a/browser/action.py +++ b/browser/action.py @@ -75,6 +75,7 @@ class DialogAction(Action): dialogName = 'create' qualifier = typeToken = innerForm = None fixedType = False + addParams = {} @Lazy def url(self): @@ -91,6 +92,7 @@ class DialogAction(Action): urlParams['inner_form'] = self.innerForm if self.fixedType: urlParams['fixed_type'] = 'yes' + urlParams.update(self.addParams) return self.jsOnClick % (self.dialogName, self.page.virtualTargetUrl, self.viewName, urlencode(urlParams)) diff --git a/browser/form.py b/browser/form.py index 134d75b..e5a3d2c 100644 --- a/browser/form.py +++ b/browser/form.py @@ -364,7 +364,8 @@ class EditObject(FormController, I18NView): self.object = obj formState = self.updateFields() # TODO: error handling - self.request.response.redirect(self.view.virtualTargetUrl + '?version=this') + url = self.view.virtualTargetUrl + '?version=this' + self.request.response.redirect(url) return False def updateFields(self): diff --git a/i18n/README.txt b/i18n/README.txt index bf1658a..4104537 100644 --- a/i18n/README.txt +++ b/i18n/README.txt @@ -144,6 +144,12 @@ to the default language at the time of the attribute creation. >>> topic01.title.lower() u'loops for zope 3' +Viewing translations +-------------------- + + >>> view.adapted.translations() + {'en': u'loops for Zope 3', 'it': u'loops per Zope 3'} + Fin de partie ============= diff --git a/i18n/common.py b/i18n/common.py index 2f483c8..e181937 100644 --- a/i18n/common.py +++ b/i18n/common.py @@ -128,3 +128,15 @@ class I18NAdapterBase(AdapterBase): self.checkAttr(attr) setI18nValue(self.context, '_' + attr, value, langInfo) + def translations(self, attr='title', omitCurrent=True): + langInfo = self.languageInfo + if langInfo: + langs = langInfo.availableLanguages + if len(langs) > 1: + value = getattr(removeSecurityProxy(self.context), '_' + attr, None) + if isinstance(value, I18NValue): + result = dict((k, v) for k, v in value.items() if v) + if omitCurrent and langInfo.language in result: + del result[langInfo.language] + return result + return {} diff --git a/knowledge/glossary/browser.py b/knowledge/glossary/browser.py index 73bfd12..49f0ab0 100755 --- a/knowledge/glossary/browser.py +++ b/knowledge/glossary/browser.py @@ -68,10 +68,13 @@ class GlossaryItemView(ConceptView): def getActions(self, category='object', page=None): actions = [] if category == 'portlet': + lang = self.request.get('loops.language') + langParam = lang and {'loops.language': lang} or {} actions.append(DialogAction(self, title='Edit Glossary Item...', description='Modify glossary item.', viewName='edit_glossaryitem.html', dialogName='editGlossaryItem', + addParams=langParam, page=page)) return actions diff --git a/knowledge/glossary/view_macros.pt b/knowledge/glossary/view_macros.pt index 241e1f7..a9abf18 100755 --- a/knowledge/glossary/view_macros.pt +++ b/knowledge/glossary/view_macros.pt @@ -27,6 +27,16 @@ title related/description"> Topic + + (en, ) + @@ -34,10 +44,21 @@ +

+ Translations: + en, +

- siehe: + See also: diff --git a/locales/de/LC_MESSAGES/loops.mo b/locales/de/LC_MESSAGES/loops.mo index 0357d4e2eacde129a5f3cd4a33871f506c93061e..5058cef69565e4436f05e0c5ea7c31e9b9b88d86 100644 GIT binary patch delta 1557 zcmYk+OGp(_9LMqF^=dw@k9?$Mz7j)IGtGRKrTN^rNGzz3ZgNS%uHe;$Zmy(7NE;c1 zN)uezLJC8pgn}MI5k?V0(Z)ogAPJ%f7ZLRRU1!l@{^xV%%*=VsnfZ}+JKet;=Nvbr zCSo^n)?thrC!J)Zj8J2?VJ5mT7lW}BBeBx1Z@@&(TX6?=VK@#UhZ!Y{!7&WOX{24h znWYd<#XQF03yj5&s1CnjGH%+}V|hwr%R&tx2f1WQPz_h1p0C3wY_rchP|x+D1~!0U z^lyeKY^UNHs=+DLjkBl$%waY@Mm4;S9Of69I{bqN(8);%9zu0og}UBMruI&t26_sk zu^l7n-&~}Sf&<85#>sT!6zawq+=us3EA$D~;7?SCoA&u%)I=OiPxT45yHFF!Ks{H0 zdR4{f*M%ku5!i;bVa}m$?81EXVmeNsX8s7(!IJGOyZ$Yzy$`5%K4W>1G2iX;y)3UL zREWA>9m)D@MvYWx51dAA9xrNymyu`9gzXIK70jWQ_$g{YZ!iJhBZt|r&o@yk>0(qn zF&=ea0jj>%#rkW+&17omB&y+d)IhpX4-8`xUPsOR9%=>;P+!9n)b3tF4zoh0`_@o1 z{(^b<8`W+molrF8ehO-+9$T;lHIQ4Vm6<`Uz@qJQ)W~0>8eTy?zm8h54b-a);-Xf< zg=!}m4`Uu`B|1_4_%BgVgQIrE80vu=s2SX`oktF{NTwOTL~Yt-)XcvkeVa|xfJ3NM z2QgTRNtlW)c6~R}ex>Q#Dwsk0!Vqc~Uq#K}CbEYDNi$F<8gQjG?Mz8j)0(&DTu&S! zimi9f_zHcJ|EFwDN(jA1O-$)Hp)X4-l1V5vS*aoEp6acWKwd-6U(p;RatWmdLOW5L zV-Jx<)DilHDisigL^+}5&^yv!ET7P)bd)HwrbE(eYAH1m8AK7Gq=iijl=z+CL1I5q zMQ9sU5c)s^X(1@|iX+sM;qLbJSR-L0k-cuOuiM?%)#LS9q2bT0yW51Q|#UWV8r|f*vr4*d{aL zW(&izf}nCU7_|tjMI=MJq(ucv6hzsgpj}XXe|CZn_kTaC_z3l8&QdCQSXN_7rX8Ae$;zIsEG}u zhw)9Eil2t_sDu-!j#H=!+{7Txq7uJCF7tt#23)}q{=f_j(x`!JQJ*(+Q@&2rM0+p~ z`_aqzW`If=4%-f6w!=8q(0(1YGcQny-k=6rvdNk&C@pG)jMO5D3 z$YqKdOnIskRQjpZp(b(;wKb!t9k^zlLCyR=Dsd8(;2CPiQph6BGV1*mY{Oru9cbkx zddSH{x4=H zYFqT(=wGXj&`)U>(c~mE0v&s(brY3@{x(#!!4<1Djv{U&8i-~>$0tJQ2ddID=g++0 qa%MauPDA$7^mr`he9b=W3Weu-a~`KVzPwpyA#XV|J{&t1Gk*Y_op}=g diff --git a/locales/de/LC_MESSAGES/loops.po b/locales/de/LC_MESSAGES/loops.po index 625ca74..4a842f0 100644 --- a/locales/de/LC_MESSAGES/loops.po +++ b/locales/de/LC_MESSAGES/loops.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: $Id$\n" "POT-Creation-Date: 2007-05-22 12:00 CET\n" -"PO-Revision-Date: 2007-12-04 12:00 CET\n" +"PO-Revision-Date: 2007-12-17 12:00 CET\n" "Last-Translator: Helmut Merz \n" "Language-Team: loops developers \n" "MIME-Version: 1.0\n" @@ -197,8 +197,11 @@ msgstr "major" msgid "minor" msgstr "minor" -msgid "see" -msgstr "siehe" +msgid "See also" +msgstr "Siehe auch" + +msgid "Translations" +msgstr "Übersetzungen" msgid "Change Password" msgstr "Passwort ändern"