Die Übersetzung funktionierte nicht richtig da die Reihenfolge beim Dictionary nicht korrekt eingehalten wurde. Ich habe die Dictionaries durch Listen ersetzt -- jetzt funktioniert es besser.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
"""
***********************************************************************
* Description: Sendet ein Email mit den aktuellen Terminen an die
* angegebene Emailadresse
* (baut auf dem Programm "birthday" auf
* --> 'man birthday')
* Version: 0.4
* Copyright: 2004 by Gerold Penz - gerold.penz(at)aon.at
* Created: 2004-07-10 by Gerold
* Modified: 2004-07-22 by Gerold
* License: free
* Requirements: Python2.3: http://www.python.org
* birthday: http://users.zetnet.co.uk/mortia/source/
***********************************************************************
"""
FROM_EMAIL = "root@gp-server.gp"
FROM_NAME = "GP-SERVER"
TO_EMAIL = "gerold@gp-server.gp"
TO_NAME = "Gerold Penz"
DAYS = 7
ROWS = 3
SUBJECT = "Termine und Ereignisse"
#----------------------------------------------------------------------
def translate_eventlist(text):
"""Uebersetzt die Ereignisliste"""
translations = \
[
[" finishes today", " wird HEUTE fertig"],
[" has a birthday", " hat Geburtstag --"],
[" for", " Dauert"],
[" day longer", " Tag an"],
[" days longer", " Tage an"],
[" tomorrow", " MORGEN"],
[" days' time", " Tagen"],
[" today", " HEUTE"],
[" days", " Tage"],
[" day", " Tag"],
[" week's time", " Woche(n)"]
]
for item in translations:
text = text.replace(item[0], item[1])
#Rueckgabe
return text
#----------------------------------------------------------------------
def translate_calendar(text):
"""Uebersetzt Wochentage und Monate"""
#Wochentage uebersetzen
weekdays = \
[
["-Monday-", "-Montag-"],
["-Tuesday-", "-Dienstag-"],
["-Wednesday-", "-Mittwoch-"],
["-Thursday-", "-Donnerstag-"],
["-Friday-", "-Freitag-"],
["-Saturday-", "-Samstag-"],
["-Sunday-", "-Sonntag-"],
]
for item in weekdays:
text = text.replace(item[0], item[1])
#Monate uebersetzen
months = \
[
["-January-", "-Jänner-"],
["-February-", "-Februar-"],
["-March-", "-März-"],
["-April-", "-April-"],
["-May-", "-Mai-"],
["-June-", "-Juni-"],
["-July-", "-Juli-"],
["-August-", "-August-"],
["-September-", "-September-"],
["-October-", "-Oktober-"],
["-November-", "-November-"],
["-December-", "-Dezember-"]
]
for item in months:
text = text.replace(item[0], item[1])
#Sonstiges uebersetzen
translations = \
[
[" has a birthday", " hat Geburtstag"]
]
for item in translations:
text = text.replace(item[0], item[1])
#Rueckgabe
return text
#----------------------------------------------------------------------
def send_email(from_email, from_name, to_email, to_name, subject, text):
"""Sendet ein Email an die angegebene Adresse"""
import smtplib
server = smtplib.SMTP("localhost")
text = \
'From: \"%(from_name)s\" <%(from_email)s>\n' \
'To: \"%(to_name)s\" <%(to_email)s>\n' \
'Content-Type: text/plain;charset=\"iso-8859-1\"\n' \
'Subject: %(subject)s\n' \
'\n' \
'%(text)s' % locals()
server.sendmail(from_email, to_email, text)
server.quit()
#----------------------------------------------------------------------
def main():
import os
#Ereignisse einlesen
mailtext = "Erinnerungen:\n" + "-"*78 + "\n"
execstring = "/usr/bin/birthday -W %d" % DAYS
retfile = os.popen(execstring, "r")
mailtext += translate_eventlist(retfile.read())
retfile.close()
mailtext += "-"*78 + "\n\n"
#Kalenderansicht einlesen
mailtext += "Kalender:\n" + "-"*78 + "\n"
execstring = "/usr/bin/birthday -c -d %d -l %d" % (DAYS, ROWS)
retfile = os.popen(execstring, "r")
retlist = list(retfile.read())
retfile.close()
#Stoerende Sonderzeichen entfernen
rettext = []
for item in retlist:
if item == "\x08":
rettext.pop()
else:
rettext.append(item)
mailtext += translate_calendar("".join(rettext))
#Zu lange Linien abschneiden
rows = []
for item in mailtext.split("\n"):
if item.startswith("---"):
rows.append(item[:78])
else:
rows.append(item)
mailtext = "\n".join(rows)
#Email senden
send_email(FROM_EMAIL, FROM_NAME, TO_EMAIL, TO_NAME, SUBJECT, mailtext)
#----------------------------------------------------------------------
if __name__ == "__main__":
main()