# HG changeset patch
# User bsw
# Date 1331215743 -3600
# Node ID 2f121e50d15cbcfa50d492a9c8de9b21ec052a0b
# Parent 475465da327b143e50e28531a5c7643fb1f5a507
Translation of event messages completed
diff -r 475465da327b -r 2f121e50d15c locale/translations.de.lua
--- a/locale/translations.de.lua Thu Mar 08 14:36:04 2012 +0100
+++ b/locale/translations.de.lua Thu Mar 08 15:09:03 2012 +0100
@@ -29,9 +29,6 @@
["Abstention [single entry]"] = "Enthaltung";
["Accept invitation"] = "Einladung annehmen";
["Accepted at"] = "Angenommen am/um";
-["Accordion (all expanded)"] = "Akkordeon (alle offen)";
-["Accordion (first expanded)"] = "Akkordeon (erstes offen)";
-["Accordion (none expanded)"] = "Akkordeon (keins offen)";
["Active?"] = "Aktiv?";
["Add alternative initiative to issue"] = "Alternative Initiative zum Thema hinzufügen";
["Add my interest"] = "Mein Interesse anmelden";
@@ -82,6 +79,7 @@
["Become a member"] = "Mitglied werden";
["Birthday"] = "Geburtstag";
["By delegation"] = "Durch Delegationen";
+["Calculation"] = "Auszählung";
["Can't remove last initiator"] = "Der letzte Initiator kann nicht entfernt werden";
["Can't send confirmation email"] = "Bestätigungs-E-Mail kann nicht versendet werden.";
["Cancel"] = "Abbrechen";
@@ -89,6 +87,11 @@
["Cancel refuse of invitation"] = "Ablehnung der Einladung aufheben";
["Cancel registration"] = "Registrierung abbrechen";
["Cancelled"] = "Abgebrochen";
+["Cancelled (before accepted due to revocation)"] = false;
+["Cancelled (during discussion due to revocation)"] = false;
+["Cancelled (during verification due to revocation)"] = false;
+["Cancelled (issue not accepted)"] = "Abgebrochen (Thema nicht akzeptiert)";
+["Cancelled (no initiative admitted)"] = "Abgebrochen (Keine Initiative zugelassen)";
["Change API key"] = "API-Schlüssel ändern";
["Change area delegation"] = "Delegation für Themenbereich ändern";
["Change display settings"] = "Anzeige-Einstellungen ändern";
@@ -178,9 +181,9 @@
["Display settings"] = "Anzeige-Einstellungen";
["Download"] = "Download";
["Download database export"] = "Datenbankexport herunterladen";
+["Download documents"] = "Dokumente herunterladen";
["Draft"] = "Entwurf";
["Draft history"] = "Entwurfshistorie";
-["EXPERIMENTAL FEATURE"] = "EXPERIMENTELLE FUNKTION";
["Edit"] = "Bearbeiten";
["Edit draft"] = "Entwurf bearbeiten";
["Edit initiative"] = "Initiative bearbeiten";
@@ -194,7 +197,7 @@
["Email address too short!"] = "E-Mail-Adresse ist zu kurz!";
["Email confirmation request"] = "Bestätigung deiner E-Mail-Adresse";
["Email unconfirmed"] = "Unbestätigte E-Mail-Adresse";
-["Empty help text: #{id}.#{lang}.txt"] = false;
+["Empty help text: #{id}.#{lang}.txt"] = "Leerer Hilfe-Text: #{id}.#{lang}.txt";
["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.";
["Error while resolving openid. Internal message: '#{errmsg}'"] = "Fehler beim Auflösen der OpenID. Interne Fehlermeldung: '#{errmsg}'";
["Error while updating member, database reported:
(#{errormessage})"] = "Fehler beim aktualisieren des Mitglieds, die Datenbank berichtet folgenden Fehler:
(#{errormessage})";
@@ -204,6 +207,7 @@
["External posts"] = "Externe Ämter";
["Finish voting"] = "Stimmabgabe abschließen";
["Finished"] = "Abgeschlossen";
+["Finished (without winner)"] = "Abgeschlossen (ohne Gewinner)";
["Friday"] = "Freitag";
["Frozen"] = "Eingefroren";
["Frozen and voting phase"] = "Eingefroren- und Abstimmphase";
@@ -289,6 +293,7 @@
["Issue quorum"] = "Quorum Thema";
["Issue quorum denumerator"] = "Themen-Quorum Nenner";
["Issue quorum numerator"] = "Themen-Quorum Zähler";
+["Issue reached next phase"] = "Thema hat die nächster Phase erreicht";
["Issues"] = "Themen";
["JavaScript is disabled or not available."] = "JavaScript ist abgeschaltet oder nicht verfügbar.";
["Last activity (updated daily)"] = "Letzte Aktivität (täglich aktualisiert)";
@@ -341,6 +346,8 @@
["New draft"] = "Neuer Entwurf";
["New draft has been added to initiative"] = "Neuer Entwurf wurde der Initiative hinzugefügt";
["New initiative"] = "Neue Initiative";
+["New initiative draft"] = "Neuer Entwurfstext der Initiative";
+["New initiative in existing issue"] = "Neue Initiative in bestehenden Thema";
["New issue"] = "Neues Thema";
["New password"] = "Neues Kennwort";
["New passwords does not match."] = "Du hast nicht zweimal das gleiche Kennwort eingegeben";
@@ -527,7 +534,6 @@
["Supporter"] = "Unterstützer";
["Supporter count"] = "Anzahl der Unterstützer";
["Syntax help"] = "Syntax-Hilfe";
-["Tabs"] = "Registerkarten";
["Terms of use"] = "Nutzungsbedingungen";
["The API key has been changed too fast."] = "Der API-Schlüssel wurde zu schnell geändert.";
["The code you've entered is invalid"] = "Der Code, den Du eingeben hast, ist nicht gültig!";
@@ -571,7 +577,6 @@
["Trustee"] = "Bevollmächtigter";
["Trustee has no voting right in this unit"] = "Bevollmächtigter hat kein Stimmrecht in dieser Gliederung";
["Tuesday"] = "Dienstag";
-["Type of tabs"] = "Tabulatortyp";
["Unconfirmed address"] = "Unbestätigte E-Mail";
["Unit"] = "Gliederung";
["Unit delegated to '#{name}'"] = "Gliederung an '#{name}' delegiert";
@@ -662,12 +667,12 @@
["Z-A"] = "Z-A";
["[No voting privilege]"] = "[Kein Stimmrecht]";
["[Registered members only]"] = "[nur für Registrierte]";
-["[event mail] URL: #{url}"] = " URL: #{url}";
-["[event mail] Area: #{name}"] = "Themengebiet: #{name}";
-["[event mail] Unit: #{name}"] = " Gliederung: #{name}";
-["[event mail] Event: #{event}"] = " Ereignis: #{event}";
-["[event mail] Issue: ##{id}"] = " Thema: ##{id}";
-["[event mail] Phase: #{phase}"] = " Phase: #{phase}";
+["[event mail] URL: #{url}"] = " URL: #{url}";
+["[event mail] Area: #{name}"] = "Themengebiet: #{name}";
+["[event mail] Unit: #{name}"] = " Gliederung: #{name}";
+["[event mail] Event: #{event}"] = " Ereignis: #{event}";
+["[event mail] Issue: ##{id}"] = " Thema: ##{id}";
+["[event mail] Phase: #{phase}"] = " Phase: #{phase}";
["[event mail] Policy: #{policy}"] = " Regelwerk: #{policy}";
["[not displayed public]"] = "[nicht öffentlich]";
["a bit unsatisfied"] = "etwas unzufrieden";
@@ -683,7 +688,7 @@
["days"] = "Tage";
["deactivated"] = "deaktiviert";
["delegated to"] = "delegiert an";
-["delete
"] = false;
+["delete
"] = "löschen
";
["disabled"] = "ausgeschaltet";
["email"] = "E-Mail";
["global"] = "Global";
diff -r 475465da327b -r 2f121e50d15c model/event.lua
--- a/model/event.lua Thu Mar 08 14:36:04 2012 +0100
+++ b/model/event.lua Thu Mar 08 15:09:03 2012 +0100
@@ -9,6 +9,34 @@
ref = 'issue',
}
+function Event.object_get:event_name()
+ return ({
+ issue_state_changed = _"Issue reached next phase",
+ initiative_created_in_new_issue = _"New issue",
+ initiative_created_in_existing_issue = _"New initiative in existing issue",
+ initiative_revoked = _"Initiative revoked",
+ new_draft_created = _"New initiative draft",
+ suggestion_created = _"New suggestion"
+ })[self.event]
+end
+
+function Event.object_get:state_name()
+ return ({
+ admission = _"New",
+ discussion = _"Discussion",
+ verification = _"Frozen",
+ voting = _"Voting",
+ canceled_revoked_before_accepted = _"Cancelled (before accepted due to revocation)",
+ canceled_issue_not_accepted = _"Cancelled (issue not accepted)",
+ canceled_after_revocation_during_discussion = _"Cancelled (during discussion due to revocation)",
+ canceled_after_revocation_during_verification = _"Cancelled (during verification due to revocation)",
+ calculation = _"Calculation",
+ canceled_no_initiative_admitted = _"Cancelled (no initiative admitted)",
+ finished_without_winner = _"Finished (without winner)",
+ finished_with_winner = "Finished (with winner)"
+ })[self.state]
+end
+
function Event.object:send_notification()
local members_to_notify = Member:new_selector()
@@ -21,62 +49,71 @@
local url
- local body = ""
+ for i, member in ipairs(members_to_notify) do
+ local subject
+ local body = ""
+
+ locale.do_with(
+ { lang = member.lang or config.default_lang or 'en' },
+ function()
+ subject = config.mail_subject_prefix .. _("##{id} #{event}", { id = self.issue_id, event = self.event })
+ body = body .. _("[event mail] Unit: #{name}", { name = self.issue.area.unit.name }) .. "\n"
+ body = body .. _("[event mail] Area: #{name}", { name = self.issue.area.name }) .. "\n"
+ body = body .. _("[event mail] Issue: ##{id}", { id = self.issue_id }) .. "\n\n"
+ body = body .. _("[event mail] Policy: #{policy}", { policy = self.issue.policy.name }) .. "\n\n"
+ body = body .. _("[event mail] Event: #{event}", { event = self.event_name }) .. "\n\n"
+ body = body .. _("[event mail] Phase: #{phase}", { phase = self.state_name }) .. "\n\n"
+
+ if self.initiative_id then
+ url = request.get_absolute_baseurl() .. "initiative/show/" .. self.initiative_id .. ".html"
+ elseif self.suggestion_id then
+ url = request.get_absolute_baseurl() .. "suggestion/show/" .. self.suggestion_id .. ".html"
+ else
+ url = request.get_absolute_baseurl() .. "issue/show/" .. self.issue_id .. ".html"
+ end
+
+ body = body .. _("[event mail] URL: #{url}", { url = url }) .. "\n\n"
+
+ if self.initiative_id then
+ local initiative = Initiative:by_id(self.initiative_id)
+ body = body .. _("i#{id}: #{name}", { id = initiative.id, name = initiative.name }) .. "\n\n"
+ else
+ local initiative_count = Initiative:new_selector()
+ :add_where{ "initiative.issue_id = ?", self.issue_id }
+ :count()
+ local initiatives = Initiative:new_selector()
+ :add_where{ "initiative.issue_id = ?", self.issue_id }
+ :add_order_by("initiative.supporter_count DESC")
+ :limit(3)
+ :exec()
+ for i, initiative in ipairs(initiatives) do
+ body = body .. _("i#{id}: #{name}", { id = initiative.id, name = initiative.name }) .. "\n"
+ end
+ if initiative_count - 3 > 0 then
+ body = body .. _("and #{count} more initiatives", { count = initiative_count }) .. "\n"
+ end
+ body = body .. "\n"
+ end
+
+ if self.suggestion_id then
+ local suggestion = Suggestion:by_id(self.suggestion_id)
+ body = body .. _("#{name}\n\n", { name = suggestion.name })
+ end
- body = body .. _("[event mail] Unit: #{name}", { name = self.issue.area.unit.name }) .. "\n"
- body = body .. _("[event mail] Area: #{name}", { name = self.issue.area.name }) .. "\n"
- body = body .. _("[event mail] Issue: ##{id}", { id = self.issue_id }) .. "\n"
- body = body .. _("[event mail] Policy: #{policy}", { phase = self.issue.policy.name }) .. "\n"
- body = body .. _("[event mail] Phase: #{phase}", { phase = self.state }) .. "\n\n"
- body = body .. _("[event mail] Event: #{event}", { event = self.event }) .. "\n\n"
-
- if self.initiative_id then
- url = request.get_absolute_baseurl() .. "initiative/show/" .. self.initiative_id .. ".html"
- elseif self.suggestion_id then
- url = request.get_absolute_baseurl() .. "suggestion/show/" .. self.suggestion_id .. ".html"
- else
- url = request.get_absolute_baseurl() .. "issue/show/" .. self.issue_id .. ".html"
+ local success = net.send_mail{
+ envelope_from = config.mail_envelope_from,
+ from = config.mail_from,
+ reply_to = config.mail_reply_to,
+ to = member.notify_email,
+ subject = ,
+ content_type = "text/plain; charset=UTF-8",
+ content = body
+ }
+
+ end
+ )
end
- body = body .. _("[event mail] URL: #{url}", { url = url }) .. "\n\n"
-
- if self.initiative_id then
- local initiative = Initiative:by_id(self.initiative_id)
- body = body .. _("i#{id}: #{name}", { id = initiative.id, name = initiative.name }) .. "\n\n"
- else
- local initiative_count = Initiative:new_selector()
- :add_where{ "initiative.issue_id = ?", self.issue_id }
- :count()
- local initiatives = Initiative:new_selector()
- :add_where{ "initiative.issue_id = ?", self.issue_id }
- :add_order_by("initiative.supporter_count DESC")
- :limit(3)
- :exec()
- for i, initiative in ipairs(initiatives) do
- body = body .. _("i#{id}: #{name}", { id = initiative.id, name = initiative.name }) .. "\n"
- end
- if initiative_count - 3 > 0 then
- body = body .. _("and #{count} more initiatives", { count = initiative_count }) .. "\n"
- end
- body = body .. "\n"
- end
-
- if self.suggestion_id then
- local suggestion = Suggestion:by_id(self.suggestion_id)
- body = body .. _("#{name}\n\n", { name = suggestion.name })
- end
-
- for i, member in ipairs(members_to_notify) do
- local success = net.send_mail{
- envelope_from = config.mail_envelope_from,
- from = config.mail_from,
- reply_to = config.mail_reply_to,
- to = member.notify_email,
- subject = config.mail_subject_prefix .. _("##{id} #{event}", { id = self.issue_id, event = self.event }), content_type = "text/plain; charset=UTF-8",
- content = body
- }
- end
-
end
function Event:send_next_notification()