liquid_feedback_frontend
changeset 405:2f121e50d15c
Translation of event messages completed
author | bsw |
---|---|
date | Thu Mar 08 15:09:03 2012 +0100 (2012-03-08) |
parents | 475465da327b |
children | b297b85dc569 |
files | locale/translations.de.lua model/event.lua |
line diff
1.1 --- a/locale/translations.de.lua Thu Mar 08 14:36:04 2012 +0100 1.2 +++ b/locale/translations.de.lua Thu Mar 08 15:09:03 2012 +0100 1.3 @@ -29,9 +29,6 @@ 1.4 ["Abstention [single entry]"] = "Enthaltung"; 1.5 ["Accept invitation"] = "Einladung annehmen"; 1.6 ["Accepted at"] = "Angenommen am/um"; 1.7 -["Accordion (all expanded)"] = "Akkordeon (alle offen)"; 1.8 -["Accordion (first expanded)"] = "Akkordeon (erstes offen)"; 1.9 -["Accordion (none expanded)"] = "Akkordeon (keins offen)"; 1.10 ["Active?"] = "Aktiv?"; 1.11 ["Add alternative initiative to issue"] = "Alternative Initiative zum Thema hinzufügen"; 1.12 ["Add my interest"] = "Mein Interesse anmelden"; 1.13 @@ -82,6 +79,7 @@ 1.14 ["Become a member"] = "Mitglied werden"; 1.15 ["Birthday"] = "Geburtstag"; 1.16 ["By delegation"] = "Durch Delegationen"; 1.17 +["Calculation"] = "Auszählung"; 1.18 ["Can't remove last initiator"] = "Der letzte Initiator kann nicht entfernt werden"; 1.19 ["Can't send confirmation email"] = "Bestätigungs-E-Mail kann nicht versendet werden."; 1.20 ["Cancel"] = "Abbrechen"; 1.21 @@ -89,6 +87,11 @@ 1.22 ["Cancel refuse of invitation"] = "Ablehnung der Einladung aufheben"; 1.23 ["Cancel registration"] = "Registrierung abbrechen"; 1.24 ["Cancelled"] = "Abgebrochen"; 1.25 +["Cancelled (before accepted due to revocation)"] = false; 1.26 +["Cancelled (during discussion due to revocation)"] = false; 1.27 +["Cancelled (during verification due to revocation)"] = false; 1.28 +["Cancelled (issue not accepted)"] = "Abgebrochen (Thema nicht akzeptiert)"; 1.29 +["Cancelled (no initiative admitted)"] = "Abgebrochen (Keine Initiative zugelassen)"; 1.30 ["Change API key"] = "API-Schlüssel ändern"; 1.31 ["Change area delegation"] = "Delegation für Themenbereich ändern"; 1.32 ["Change display settings"] = "Anzeige-Einstellungen ändern"; 1.33 @@ -178,9 +181,9 @@ 1.34 ["Display settings"] = "Anzeige-Einstellungen"; 1.35 ["Download"] = "Download"; 1.36 ["Download database export"] = "Datenbankexport herunterladen"; 1.37 +["Download documents"] = "Dokumente herunterladen"; 1.38 ["Draft"] = "Entwurf"; 1.39 ["Draft history"] = "Entwurfshistorie"; 1.40 -["EXPERIMENTAL FEATURE"] = "EXPERIMENTELLE FUNKTION"; 1.41 ["Edit"] = "Bearbeiten"; 1.42 ["Edit draft"] = "Entwurf bearbeiten"; 1.43 ["Edit initiative"] = "Initiative bearbeiten"; 1.44 @@ -194,7 +197,7 @@ 1.45 ["Email address too short!"] = "E-Mail-Adresse ist zu kurz!"; 1.46 ["Email confirmation request"] = "Bestätigung deiner E-Mail-Adresse"; 1.47 ["Email unconfirmed"] = "Unbestätigte E-Mail-Adresse"; 1.48 -["Empty help text: #{id}.#{lang}.txt"] = false; 1.49 +["Empty help text: #{id}.#{lang}.txt"] = "Leerer Hilfe-Text: #{id}.#{lang}.txt"; 1.50 ["Error while converting image. Please note, that only JPG files are supported!"] = "Fehler beim Konvertieren des Bilds. Bitte beachte, dass nur JPG-Dateien unterstützt werden."; 1.51 ["Error while resolving openid. Internal message: '#{errmsg}'"] = "Fehler beim Auflösen der OpenID. Interne Fehlermeldung: '#{errmsg}'"; 1.52 ["Error while updating member, database reported:<br /><br /> (#{errormessage})"] = "Fehler beim aktualisieren des Mitglieds, die Datenbank berichtet folgenden Fehler:<br /><br /> (#{errormessage})"; 1.53 @@ -204,6 +207,7 @@ 1.54 ["External posts"] = "Externe Ämter"; 1.55 ["Finish voting"] = "Stimmabgabe abschließen"; 1.56 ["Finished"] = "Abgeschlossen"; 1.57 +["Finished (without winner)"] = "Abgeschlossen (ohne Gewinner)"; 1.58 ["Friday"] = "Freitag"; 1.59 ["Frozen"] = "Eingefroren"; 1.60 ["Frozen and voting phase"] = "Eingefroren- und Abstimmphase"; 1.61 @@ -289,6 +293,7 @@ 1.62 ["Issue quorum"] = "Quorum Thema"; 1.63 ["Issue quorum denumerator"] = "Themen-Quorum Nenner"; 1.64 ["Issue quorum numerator"] = "Themen-Quorum Zähler"; 1.65 +["Issue reached next phase"] = "Thema hat die nächster Phase erreicht"; 1.66 ["Issues"] = "Themen"; 1.67 ["JavaScript is disabled or not available."] = "JavaScript ist abgeschaltet oder nicht verfügbar."; 1.68 ["Last activity (updated daily)"] = "Letzte Aktivität (täglich aktualisiert)"; 1.69 @@ -341,6 +346,8 @@ 1.70 ["New draft"] = "Neuer Entwurf"; 1.71 ["New draft has been added to initiative"] = "Neuer Entwurf wurde der Initiative hinzugefügt"; 1.72 ["New initiative"] = "Neue Initiative"; 1.73 +["New initiative draft"] = "Neuer Entwurfstext der Initiative"; 1.74 +["New initiative in existing issue"] = "Neue Initiative in bestehenden Thema"; 1.75 ["New issue"] = "Neues Thema"; 1.76 ["New password"] = "Neues Kennwort"; 1.77 ["New passwords does not match."] = "Du hast nicht zweimal das gleiche Kennwort eingegeben"; 1.78 @@ -527,7 +534,6 @@ 1.79 ["Supporter"] = "Unterstützer"; 1.80 ["Supporter count"] = "Anzahl der Unterstützer"; 1.81 ["Syntax help"] = "Syntax-Hilfe"; 1.82 -["Tabs"] = "Registerkarten"; 1.83 ["Terms of use"] = "Nutzungsbedingungen"; 1.84 ["The API key has been changed too fast."] = "Der API-Schlüssel wurde zu schnell geändert."; 1.85 ["The code you've entered is invalid"] = "Der Code, den Du eingeben hast, ist nicht gültig!"; 1.86 @@ -571,7 +577,6 @@ 1.87 ["Trustee"] = "Bevollmächtigter"; 1.88 ["Trustee has no voting right in this unit"] = "Bevollmächtigter hat kein Stimmrecht in dieser Gliederung"; 1.89 ["Tuesday"] = "Dienstag"; 1.90 -["Type of tabs"] = "Tabulatortyp"; 1.91 ["Unconfirmed address"] = "Unbestätigte E-Mail"; 1.92 ["Unit"] = "Gliederung"; 1.93 ["Unit delegated to '#{name}'"] = "Gliederung an '#{name}' delegiert"; 1.94 @@ -662,12 +667,12 @@ 1.95 ["Z-A"] = "Z-A"; 1.96 ["[No voting privilege]"] = "[Kein Stimmrecht]"; 1.97 ["[Registered members only]"] = "[nur für Registrierte]"; 1.98 -["[event mail] URL: #{url}"] = " URL: #{url}"; 1.99 -["[event mail] Area: #{name}"] = "Themengebiet: #{name}"; 1.100 -["[event mail] Unit: #{name}"] = " Gliederung: #{name}"; 1.101 -["[event mail] Event: #{event}"] = " Ereignis: #{event}"; 1.102 -["[event mail] Issue: ##{id}"] = " Thema: ##{id}"; 1.103 -["[event mail] Phase: #{phase}"] = " Phase: #{phase}"; 1.104 +["[event mail] URL: #{url}"] = " URL: #{url}"; 1.105 +["[event mail] Area: #{name}"] = "Themengebiet: #{name}"; 1.106 +["[event mail] Unit: #{name}"] = " Gliederung: #{name}"; 1.107 +["[event mail] Event: #{event}"] = " Ereignis: #{event}"; 1.108 +["[event mail] Issue: ##{id}"] = " Thema: ##{id}"; 1.109 +["[event mail] Phase: #{phase}"] = " Phase: #{phase}"; 1.110 ["[event mail] Policy: #{policy}"] = " Regelwerk: #{policy}"; 1.111 ["[not displayed public]"] = "[nicht öffentlich]"; 1.112 ["a bit unsatisfied"] = "etwas unzufrieden"; 1.113 @@ -683,7 +688,7 @@ 1.114 ["days"] = "Tage"; 1.115 ["deactivated"] = "deaktiviert"; 1.116 ["delegated to"] = "delegiert an"; 1.117 -["delete<br /><br />"] = false; 1.118 +["delete<br /><br />"] = "löschen<br /><br />"; 1.119 ["disabled"] = "ausgeschaltet"; 1.120 ["email"] = "E-Mail"; 1.121 ["global"] = "Global";
2.1 --- a/model/event.lua Thu Mar 08 14:36:04 2012 +0100 2.2 +++ b/model/event.lua Thu Mar 08 15:09:03 2012 +0100 2.3 @@ -9,6 +9,34 @@ 2.4 ref = 'issue', 2.5 } 2.6 2.7 +function Event.object_get:event_name() 2.8 + return ({ 2.9 + issue_state_changed = _"Issue reached next phase", 2.10 + initiative_created_in_new_issue = _"New issue", 2.11 + initiative_created_in_existing_issue = _"New initiative in existing issue", 2.12 + initiative_revoked = _"Initiative revoked", 2.13 + new_draft_created = _"New initiative draft", 2.14 + suggestion_created = _"New suggestion" 2.15 + })[self.event] 2.16 +end 2.17 + 2.18 +function Event.object_get:state_name() 2.19 + return ({ 2.20 + admission = _"New", 2.21 + discussion = _"Discussion", 2.22 + verification = _"Frozen", 2.23 + voting = _"Voting", 2.24 + canceled_revoked_before_accepted = _"Cancelled (before accepted due to revocation)", 2.25 + canceled_issue_not_accepted = _"Cancelled (issue not accepted)", 2.26 + canceled_after_revocation_during_discussion = _"Cancelled (during discussion due to revocation)", 2.27 + canceled_after_revocation_during_verification = _"Cancelled (during verification due to revocation)", 2.28 + calculation = _"Calculation", 2.29 + canceled_no_initiative_admitted = _"Cancelled (no initiative admitted)", 2.30 + finished_without_winner = _"Finished (without winner)", 2.31 + finished_with_winner = "Finished (with winner)" 2.32 + })[self.state] 2.33 +end 2.34 + 2.35 function Event.object:send_notification() 2.36 2.37 local members_to_notify = Member:new_selector() 2.38 @@ -21,62 +49,71 @@ 2.39 2.40 local url 2.41 2.42 - local body = "" 2.43 + for i, member in ipairs(members_to_notify) do 2.44 + local subject 2.45 + local body = "" 2.46 + 2.47 + locale.do_with( 2.48 + { lang = member.lang or config.default_lang or 'en' }, 2.49 + function() 2.50 + subject = config.mail_subject_prefix .. _("##{id} #{event}", { id = self.issue_id, event = self.event }) 2.51 + body = body .. _("[event mail] Unit: #{name}", { name = self.issue.area.unit.name }) .. "\n" 2.52 + body = body .. _("[event mail] Area: #{name}", { name = self.issue.area.name }) .. "\n" 2.53 + body = body .. _("[event mail] Issue: ##{id}", { id = self.issue_id }) .. "\n\n" 2.54 + body = body .. _("[event mail] Policy: #{policy}", { policy = self.issue.policy.name }) .. "\n\n" 2.55 + body = body .. _("[event mail] Event: #{event}", { event = self.event_name }) .. "\n\n" 2.56 + body = body .. _("[event mail] Phase: #{phase}", { phase = self.state_name }) .. "\n\n" 2.57 + 2.58 + if self.initiative_id then 2.59 + url = request.get_absolute_baseurl() .. "initiative/show/" .. self.initiative_id .. ".html" 2.60 + elseif self.suggestion_id then 2.61 + url = request.get_absolute_baseurl() .. "suggestion/show/" .. self.suggestion_id .. ".html" 2.62 + else 2.63 + url = request.get_absolute_baseurl() .. "issue/show/" .. self.issue_id .. ".html" 2.64 + end 2.65 + 2.66 + body = body .. _("[event mail] URL: #{url}", { url = url }) .. "\n\n" 2.67 + 2.68 + if self.initiative_id then 2.69 + local initiative = Initiative:by_id(self.initiative_id) 2.70 + body = body .. _("i#{id}: #{name}", { id = initiative.id, name = initiative.name }) .. "\n\n" 2.71 + else 2.72 + local initiative_count = Initiative:new_selector() 2.73 + :add_where{ "initiative.issue_id = ?", self.issue_id } 2.74 + :count() 2.75 + local initiatives = Initiative:new_selector() 2.76 + :add_where{ "initiative.issue_id = ?", self.issue_id } 2.77 + :add_order_by("initiative.supporter_count DESC") 2.78 + :limit(3) 2.79 + :exec() 2.80 + for i, initiative in ipairs(initiatives) do 2.81 + body = body .. _("i#{id}: #{name}", { id = initiative.id, name = initiative.name }) .. "\n" 2.82 + end 2.83 + if initiative_count - 3 > 0 then 2.84 + body = body .. _("and #{count} more initiatives", { count = initiative_count }) .. "\n" 2.85 + end 2.86 + body = body .. "\n" 2.87 + end 2.88 + 2.89 + if self.suggestion_id then 2.90 + local suggestion = Suggestion:by_id(self.suggestion_id) 2.91 + body = body .. _("#{name}\n\n", { name = suggestion.name }) 2.92 + end 2.93 2.94 - body = body .. _("[event mail] Unit: #{name}", { name = self.issue.area.unit.name }) .. "\n" 2.95 - body = body .. _("[event mail] Area: #{name}", { name = self.issue.area.name }) .. "\n" 2.96 - body = body .. _("[event mail] Issue: ##{id}", { id = self.issue_id }) .. "\n" 2.97 - body = body .. _("[event mail] Policy: #{policy}", { phase = self.issue.policy.name }) .. "\n" 2.98 - body = body .. _("[event mail] Phase: #{phase}", { phase = self.state }) .. "\n\n" 2.99 - body = body .. _("[event mail] Event: #{event}", { event = self.event }) .. "\n\n" 2.100 - 2.101 - if self.initiative_id then 2.102 - url = request.get_absolute_baseurl() .. "initiative/show/" .. self.initiative_id .. ".html" 2.103 - elseif self.suggestion_id then 2.104 - url = request.get_absolute_baseurl() .. "suggestion/show/" .. self.suggestion_id .. ".html" 2.105 - else 2.106 - url = request.get_absolute_baseurl() .. "issue/show/" .. self.issue_id .. ".html" 2.107 + local success = net.send_mail{ 2.108 + envelope_from = config.mail_envelope_from, 2.109 + from = config.mail_from, 2.110 + reply_to = config.mail_reply_to, 2.111 + to = member.notify_email, 2.112 + subject = , 2.113 + content_type = "text/plain; charset=UTF-8", 2.114 + content = body 2.115 + } 2.116 + 2.117 + end 2.118 + ) 2.119 end 2.120 2.121 - body = body .. _("[event mail] URL: #{url}", { url = url }) .. "\n\n" 2.122 - 2.123 - if self.initiative_id then 2.124 - local initiative = Initiative:by_id(self.initiative_id) 2.125 - body = body .. _("i#{id}: #{name}", { id = initiative.id, name = initiative.name }) .. "\n\n" 2.126 - else 2.127 - local initiative_count = Initiative:new_selector() 2.128 - :add_where{ "initiative.issue_id = ?", self.issue_id } 2.129 - :count() 2.130 - local initiatives = Initiative:new_selector() 2.131 - :add_where{ "initiative.issue_id = ?", self.issue_id } 2.132 - :add_order_by("initiative.supporter_count DESC") 2.133 - :limit(3) 2.134 - :exec() 2.135 - for i, initiative in ipairs(initiatives) do 2.136 - body = body .. _("i#{id}: #{name}", { id = initiative.id, name = initiative.name }) .. "\n" 2.137 - end 2.138 - if initiative_count - 3 > 0 then 2.139 - body = body .. _("and #{count} more initiatives", { count = initiative_count }) .. "\n" 2.140 - end 2.141 - body = body .. "\n" 2.142 - end 2.143 - 2.144 - if self.suggestion_id then 2.145 - local suggestion = Suggestion:by_id(self.suggestion_id) 2.146 - body = body .. _("#{name}\n\n", { name = suggestion.name }) 2.147 - end 2.148 - 2.149 - for i, member in ipairs(members_to_notify) do 2.150 - local success = net.send_mail{ 2.151 - envelope_from = config.mail_envelope_from, 2.152 - from = config.mail_from, 2.153 - reply_to = config.mail_reply_to, 2.154 - to = member.notify_email, 2.155 - subject = config.mail_subject_prefix .. _("##{id} #{event}", { id = self.issue_id, event = self.event }), content_type = "text/plain; charset=UTF-8", 2.156 - content = body 2.157 - } 2.158 - end 2.159 - 2.160 end 2.161 2.162 function Event:send_next_notification()