From: konrad Date: Sun, 11 Jul 2010 17:11:14 +0000 (+0000) Subject: implement date time format for PHP side X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=0134f38dd4a5805078954834bc4c019925dc26be;p=web%2Fkonrad%2Fsmoke.git implement date time format for PHP side implement time and localization display for client add dummy de template git-svn-id: https://silmor.de/svn/softmagic/smoke/trunk@557 6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33 --- diff --git a/src/misc/misc.cpp b/src/misc/misc.cpp index 98956f4..c9cf32f 100644 --- a/src/misc/misc.cpp +++ b/src/misc/misc.cpp @@ -106,6 +106,7 @@ MLocalFormat::MLocalFormat(int) setWeekDays();setShortWeekDays(); setMonths();setShortMonths(); setMoneyFormat();setNumberFormat(); + setDateTimeFormat(); } MLocalFormat::MLocalFormat(const MOServerFormat& s) @@ -159,6 +160,9 @@ MLocalFormat& MLocalFormat::operator=(const MLocalFormat&f) m_pm=f.m_pm; m_moneyneg=f.m_moneyneg; m_timezone=f.m_timezone; + m_dateformat=f.m_dateformat; + m_timeformat=f.m_timeformat; + m_datetimeformat=f.m_datetimeformat; return *this; } @@ -234,6 +238,18 @@ void MLocalFormat::setShortMonths(const QStringList&m) if(m.size()==12) m_smonth=m; } + +void MLocalFormat::setDateTimeFormat(QString dateformat, QString timeformat, QString datetimeformat) +{ + if(dateformat=="")m_dateformat=QCoreApplication::translate("MLocalFormat","%Y-%M-%D","date format"); + else m_dateformat=dateformat; + if(timeformat=="")m_timeformat=QCoreApplication::translate("MLocalFormat","%h:%I","time format"); + else m_timeformat=timeformat; + if(datetimeformat=="")m_datetimeformat=QCoreApplication::translate("MLocalFormat","%Y-%M-%D %h:%I","date and time format"); + else m_datetimeformat=datetimeformat; +} + + void MLocalFormat::setMoneyFormat(QString c,int n,QString g) { m_currency=c; @@ -278,7 +294,7 @@ QString MLocalFormat::formatDate(const QDate&date,QString format)const } QString MLocalFormat::formatDate(const TimeStamp& date, QString format) const { - if(format=="")format=QCoreApplication::translate("MLocalFormat","%Y-%M-%D","date format"); + if(format=="")format=m_dateformat; return formatDateTime(date,format); } QString MLocalFormat::formatDate(qint64 date,QString format)const @@ -287,7 +303,7 @@ QString MLocalFormat::formatDate(qint64 date,QString format)const } QString MLocalFormat::formatTime(const TimeStamp& time, QString format) const { - if(format=="")format=QCoreApplication::translate("MLocalFormat","%h:%I","time format"); + if(format=="")format=m_timeformat; return formatDateTime(time,format); } QString MLocalFormat::formatTime(const QTime&time,QString format)const @@ -304,7 +320,7 @@ QString MLocalFormat::formatDateTime(const QDateTime&time,QString format)const } QString MLocalFormat::formatDateTime(const TimeStamp& ts, QString format) const { - if(format=="")format=QCoreApplication::translate("MLocalFormat","%Y-%M-%D %h:%I","date and time format"); + if(format=="")format=m_datetimeformat; //parse TimeStamp time=ts.toZone(m_timezone); QString out; @@ -381,27 +397,29 @@ QString MLocalFormat::formatDateTime(const TimeStamp& ts, QString format) const } case 'p':{ int t=time.hour(); - if(t>=1 && t<=12)out+="am"; - else out+="pm"; + if(t>=1 && t<=12)out+=m_am.toLower(); + else out+=m_pm.toLower(); break; } case 'P':{ int t=time.hour(); - if(t>=1 && t<=12)out+="AM"; - else out+="PM"; + if(t>=1 && t<=12)out+=m_am; + else out+=m_pm; break; } - case 't':out+=time.zoneAbbreviation();break; + case 't': case 'T':{ //get diff from UTC int d=time.offsetFromUTC()/60; //west(-) or east(+)? QString t; - if(d<0){t="+";d*=-1;}else t="-"; + if(d<0){t="-";d*=-1;}else t="+"; //hours QString s=QString::number(d/60); if(s.size()<2)s="0"+s; t+=s; + //T or t? make a colon? + if(format[i].unicode()=='t')t+=":"; //minutes s=QString::number(d%60); if(s.size()<2)s="0"+s; @@ -410,7 +428,8 @@ QString MLocalFormat::formatDateTime(const TimeStamp& ts, QString format) const out+=t; break; } - case 'o':out+=m_timezone;break; + case 'o':out+=time.zoneAbbreviation();break; + case 'O':out+=m_timezone;break; // % sign case '%':out+="%";break; //mistakes diff --git a/src/misc/misc.h b/src/misc/misc.h index 1671376..26e084f 100644 --- a/src/misc/misc.h +++ b/src/misc/misc.h @@ -76,9 +76,10 @@ time values can be formatted with the following variables: %%Zmilli-seconds as three digit number (eg. 007) %%p"am" or "pm" according to current time, this is the one set with setAP %%P"AM" or "PM" according to current time, this is toUpper executed on the one set with setAP -%%TISO timezone as +/-hhmm (eg. -0100 or +0100) - does not work reliably on all systems -%%ttimezone as abbreviation - the abbreviation comes from the background time zone DB and is not globally unique (eg. "CET") -%%otimezone as Olson name (eg. "Europe/Berlin") +%%TISO timezone as +/-hhmm (eg. -0100 or +0100) +%%tISO timezone as +/-hh:mm (eg. -01:00 or +01:00) +%%otimezone as abbreviation - the abbreviation comes from the background time zone DB and is not globally unique (eg. "CET") +%%Otimezone as Olson name (eg. "Europe/Berlin") Any occurrence of "%%" will be translated to a literal "%" sign. @@ -132,6 +133,9 @@ class MLocalFormat \param olsenname the name of the local timezone in Olson notation, eg. "Europe/Berlin"*/ virtual void setTimeZone(QString olsonname); + /**overrides the default formatting of date and time, if empty the translation default is used*/ + virtual void setDateTimeFormat(QString dateformat=QString(),QString timeformat=QString(),QString datetimeformat=QString()); + /**returns the currently set time zone of this formatter*/ virtual QString timeZone()const{return m_timezone;} @@ -223,6 +227,9 @@ class MLocalFormat /**returns the thousand separator if used, otherwise an empty string*/ QString thousandSeparator()const{if(m_thousanddigits>0)return m_thousand;else return "";} + /**returns the amount of digits between thousand separators*/ + int thousandDigits()const{return m_thousanddigits;} + /**returns the amount of decimals in a money value*/ int moneyDecimals()const{return m_moneydecimals;} @@ -235,12 +242,21 @@ class MLocalFormat QString moneyNegativeSigns()const{return m_moneyneg;} /**returns a regular expression matching money values - \param allownegative if given allows to use negative values - \param allowcurrency if given allows to use the currency symbol */ + \param allownegative if given the resulting RegExp allows to use negative values + \param allowcurrency if given the resulting RegExp allows to use the currency symbol */ QRegExp moneyRegExp(bool allownegative=false,bool allowcurrency=false)const; + + /**returns the default format for dates*/ + QString dateFormat()const{return m_dateformat;} + + /**returns the default format for times*/ + QString timeFormat()const{return m_timeformat;} + + /**returns the default format for date/time*/ + QString dateTimeFormat()const{return m_datetimeformat;} protected: QStringList m_day,m_sday,m_month,m_smonth; - QString m_currency,m_am,m_pm,m_moneyneg,m_timezone; + QString m_currency,m_am,m_pm,m_moneyneg,m_timezone,m_dateformat,m_timeformat,m_datetimeformat; QChar m_decimal,m_thousand; int m_moneydecimals,m_thousanddigits; diff --git a/src/misc/misc.pri b/src/misc/misc.pri index d4fb061..9f81207 100644 --- a/src/misc/misc.pri +++ b/src/misc/misc.pri @@ -1,12 +1,14 @@ HEADERS += \ misc/debug.h \ misc/misc.h \ - misc/waitcursor.h + misc/waitcursor.h \ + misc/sclock.h SOURCES += \ misc/code39.cpp \ misc/debug.cpp \ misc/misc.cpp \ - misc/waitcursor.cpp + misc/waitcursor.cpp \ + misc/sclock.cpp INCLUDEPATH += ./misc \ No newline at end of file diff --git a/src/misc/sclock.cpp b/src/misc/sclock.cpp new file mode 100644 index 0000000..611d390 --- /dev/null +++ b/src/misc/sclock.cpp @@ -0,0 +1,154 @@ +// +// C++ Implementation: overview +// +// Description: +// +// +// Author: Konrad Rosenbaum , (C) 2007 +// +// Copyright: See README/COPYING files that come with this distribution +// +// + +#include "sclock.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "tzdata.h" +#include "misc.h" + +MServerClock::MServerClock() +{ + QTimer *tm=new QTimer(this); + tm->setSingleShot(false); + tm->start(1000); + connect(tm,SIGNAL(timeout()),this,SLOT(updateClock())); + + connect(this,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(contextMenu(QPoint))); + setContextMenuPolicy(Qt::CustomContextMenu); + setFrameStyle(QFrame::Panel|QFrame::Sunken); + + contextmenu=new QMenu(this); + contextmenu->addAction(tr("Show Format Info"),this,SLOT(showInfo())); + contextmenu->addSeparator(); + QActionGroup*ag=new QActionGroup(this); + QAction*ac=ag->addAction(tr("Show Full Time")); + ac->setCheckable(true);ac->setChecked(true); + ac->setData(tr("%W, %D %N %Y %a:%I %p %t","full time format")); + contextmenu->addAction(ac);showfull=ac; + ac=ag->addAction(tr("Show Date Only"));ac->setCheckable(true); + ac->setData(tr("%w, %M/%D/%Y","date only format")); + contextmenu->addAction(ac);showdate=ac; + ac=ag->addAction(tr("Show Time Only"));ac->setCheckable(true); + ac->setData(tr("%a:%I %p %t","time only format")); + contextmenu->addAction(ac);showtime=ac; + ac=ag->addAction(tr("Show Short Date/Time"));ac->setCheckable(true); + ac->setData(tr("%w %Y-%M-%D %h:%I %t","ISO like short time format")); + contextmenu->addAction(ac);showiso=ac; + connect(ag,SIGNAL(triggered(QAction*)),this,SLOT(updateClock())); + + updateClock(); +} + +void MServerClock::updateClock() +{ + //get time and format + TimeStamp ts=TimeStamp::now(); + QString fm=showfull->data().toString(); + if(showdate->isChecked())fm=showdate->data().toString(); + if(showtime->isChecked())fm=showtime->data().toString(); + if(showiso->isChecked())fm=showiso->data().toString(); + //set it + setText(MLocalFormat().formatDateTime(ts,fm)); + //make sure tool tip is up to date + int off=ts.offsetFromUTC()/60; + QString tz=tr("Server Time Zone: %1\nOffset from UTC: %2 minutes %3") + .arg(MLocalFormat().timeZone()) + .arg(off<0?-off:off) + .arg(off>=0?tr("east","positive time zone offset"):tr("west","negative time zone offset")); + if(toolTip()!=tz)setToolTip(tz); +} + +void MServerClock::mouseDoubleClickEvent(QMouseEvent* event) +{ + QWidget::mouseDoubleClickEvent(event); + if(event->button()!=Qt::LeftButton)return; + showInfo(); +} + +static inline QString list2str(const QStringList&l) +{ + QString ret,r; + for(int i=0;i=30){ + ret+=r+"\n"; + r=""; + } + } + ret+=r; + return ret.trimmed(); +} + +void MServerClock::showInfo() +{ + QDialog d(this); + d.setWindowTitle(tr("Server Format Info")); + QVBoxLayout*vl; + QFormLayout*fl; + QHBoxLayout*hl; + d.setLayout(vl=new QVBoxLayout); + vl->addLayout(fl=new QFormLayout,10); + fl->setLabelAlignment(Qt::AlignRight|Qt::AlignTop); + MLocalFormat lf; + fl->addRow(new QLabel(tr("Number Format:"))); + fl->addRow(tr("Decimal Dot:"),new QLabel(lf.decimalDot())); + fl->addRow(tr("Separator:"),new QLabel(tr("'%1' every %2 digits").arg(lf.thousandSeparator()).arg(lf.thousandDigits()))); + + fl->addRow(new QLabel); + fl->addRow(new QLabel(tr("Currency Settings:"))); + fl->addRow(tr("Currency Symbol:"),new QLabel(lf.currency())); + fl->addRow(tr("Division Digits:"),new QLabel(QString::number(lf.moneyDecimals()))); + fl->addRow(tr("Negative Sign:"),new QLabel(lf.moneyNegativeSigns())); + fl->addRow(tr("Example:"),new QLabel(lf.formatMoney(-1234567890))); + + fl->addRow(new QLabel); + fl->addRow(new QLabel(tr("Date and Time Settings:"))); + fl->addRow(tr("Day of the Week:"),new QLabel(list2str(lf.weekDayNames()))); + fl->addRow(tr("Day of the Week Abbreviated:"),new QLabel(list2str(lf.shortWeekDayNames()))); + fl->addRow(tr("Month Names:"),new QLabel(list2str(lf.monthNames()))); + fl->addRow(tr("Month Names Abbreviated:"),new QLabel(list2str(lf.shortMonthNames()))); + fl->addRow(tr("Date Format:"),new QLabel(lf.dateFormat())); + fl->addRow(tr("Time Format:"),new QLabel(lf.timeFormat())); + fl->addRow(tr("Date and Time Format:"),new QLabel(lf.dateTimeFormat())); + MLocalFormat lfs;lfs.setTimeZone(TimeStamp::systemLocalZone()); + TimeStamp now=TimeStamp::now(); + fl->addRow(tr("System Time Zone:"),new QLabel(lfs.timeZone())); + fl->addRow(tr("Current Local Time:"),new QLabel(lfs.formatDateTime(now))); + fl->addRow(tr("Theater/Server Time Zone:"),new QLabel(lf.timeZone())); + fl->addRow(tr("Current Theater/Server Time:"),new QLabel(lf.formatDateTime(now))); + + vl->addLayout(hl=new QHBoxLayout,0); + hl->addStretch(10); + QPushButton*p; + hl->addWidget(p=new QPushButton(tr("Close"))); + p->setDefault(true); + connect(p,SIGNAL(clicked()),&d,SLOT(close())); + + d.exec(); +} + +void MServerClock::contextMenu(const QPoint& p) +{ + contextmenu->popup(mapToGlobal(p)); +} diff --git a/src/misc/sclock.h b/src/misc/sclock.h new file mode 100644 index 0000000..52db03a --- /dev/null +++ b/src/misc/sclock.h @@ -0,0 +1,39 @@ +// +// C++ Interface: overview +// +// Description: +// +// +// Author: Konrad Rosenbaum , (C) 2007-2010 +// +// Copyright: See README/COPYING files that come with this distribution +// +// + +#ifndef MAGICSMOKE_SCLOCK_H +#define MAGICSMOKE_SCLOCK_H + +#include + + +class QMenu; +class QAction; + + +class MServerClock:public QLabel +{ + Q_OBJECT + public: + MServerClock(); + private slots: + void updateClock(); + void contextMenu(const QPoint&); + void showInfo(); + protected: + virtual void mouseDoubleClickEvent ( QMouseEvent * event ); + private: + QMenu*contextmenu; + QAction*showfull,*showtime,*showdate,*showiso; +}; + +#endif diff --git a/src/mwin/overview.cpp b/src/mwin/overview.cpp index b7e57a2..dc044c4 100644 --- a/src/mwin/overview.cpp +++ b/src/mwin/overview.cpp @@ -25,6 +25,7 @@ #include "overview.h" #include "centbox.h" +#include "sclock.h" #include "tzdata.h" #include @@ -137,7 +138,9 @@ MOverview::MOverview(QString pk) mb->addMenu(MApplication::helpMenu()); //status bar - statusBar()->setSizeGripEnabled(true); + QStatusBar *sb=statusBar(); + sb->setSizeGripEnabled(true); + sb->addPermanentWidget(new MServerClock); //unused tab disabling... if(!req->hasRight(req->RGetAllEvents)){ diff --git a/src/mwin/overview.h b/src/mwin/overview.h index 63c2c13..86fdce7 100644 --- a/src/mwin/overview.h +++ b/src/mwin/overview.h @@ -4,7 +4,7 @@ // Description: // // -// Author: Konrad Rosenbaum , (C) 2007 +// Author: Konrad Rosenbaum , (C) 2007-2010 // // Copyright: See README/COPYING files that come with this distribution // diff --git a/www/inc/classes/language_manager.php b/www/inc/classes/language_manager.php index 7bb12e9..336ec5b 100644 --- a/www/inc/classes/language_manager.php +++ b/www/inc/classes/language_manager.php @@ -45,6 +45,7 @@ class LanguageManager private $config; private $templateFolder; private $formatcfg; + private $timezone; /** private constructor */ private function __construct() @@ -88,6 +89,7 @@ class LanguageManager } //initialize internal formatting $this->formatcfg=new WOServerFormat($this->lang); + $this->timezone=new DateTimeZone($this->formatcfg->gettimezone()); //make sure config manager is initialized $this->config = ConfigManager::initialize($this->templateFolder()."lang.po"); } @@ -108,28 +110,139 @@ class LanguageManager return $this->templateFolder.$this->lang."/"; } + /**returns the configured language template folder plus its fallback*/ + public function templateFolders() + { + $ret=array(); + $ret[]=realpath($this->templateFolder()); + $ret[]=realpath($this->templateFolder."C/"); + return $ret; + } + /**returns a date in current language formatted to the given format string*/ - public function formatDate($date,$str) + public function formatDate($date,$format) { - $ret=""; + $out=""; + //parse + $time=new DateTime; + $time->setTimestamp($date+0); + $time->setTimeZone($this->timezone); + $inp=false; + for($i=0;$iformat($format[$i]); + break; + case 'm':$out.=$time->format('n');break; + case 'M':$out.=$time->format('m');break; + case 'n': + $ma=$this->formatcfg->getshortmonths(); + $out.=$ma[$time->format('n')-1]; + break; + case 'N': + $ma=$this->formatcfg->getmonths(); + $out.=$ma[$time->format('n')-1]; + break; + case 'd':$out.=$time->format('j');break; + case 'D':$out.=$time->format('d');break; + case 'w': + $wd=($time->format('N')+0)%7; + $wa=$this->formatcfg->getshortweekdays(); + $out.=$wa[$wd]; + break; + case 'W': + $wd=($time->format('N')+0)%7; + $wa=$this->formatcfg->getweekdays(); + $out.=$wa[$wd]; + break; + //time formats + case 'h':$out.=$time->format('G');break; + case 'H':$out.=$time->format('H');break; + case 'a':$out.=$time->format('g');break; + case 'A':$out.=$time->format('h');break; + case 'i':$out.=$time->format('i')+0;break; + case 'I':$out.=$time->format('i');break; + case 's':$out.=$time->format('s')+0;break; + case 'S':$out.=$time->format('s');break; + case 'z': + $out.=floor($time->format('u')/1000); + break; + case 'Z': + $ms=floor($time->format('u')/1000).""; + while(strlen($ms)<3)$ms="0".$ms; + $out.=$ms; + break; + case 'p': + $t=$time->format('G')+0; + if($t>=1 && $t<=12)$out.=strtolower($this->formatcfg->getamtext()); + else $out.=strtolower($this->formatcfg->getpmtext()); + break; + case 'P': + $t=$time->format('G')+0; + if($t>=1 && $t<=12)$out.=$this->formatcfg->getamtext(); + else $out.=$this->formatcfg->getpmtext(); + break; + case 't': + case 'T': + //get diff from UTC + $d=floor($time->getOffset()/60); + //west(-) or east(+)? + if($d<0){$t="-";$d=-$d;}else $t="+"; + //hours + $s=floor($d/60).""; + if(strlen($s)<2)$s="0".$s; + $t+=$s; + //T or t? make a colon? + if($format[$i]=='t')$t.=":"; + //minutes + $s=($d%60).""; + if(strlen($s)<2)$s="0".$s; + $t.=$s; + //append + $out.=$t; + break; + case 'o':$out.=$time->format('T');break; + case 'O':$out.=$this->formatcfg->gettimezone();break; + // % sign + case '%':$out.="%";break; + //mistakes + default:$out.="%".$format[$i];break; + } + $inp=false; + }else{ + if($format[$i]=='%')$inp=true; + else $out.=$format[$i]; + } + } + //catch mistaken % at end + if($inp)$out.="%"; + //return result + return $out; } /** returns date in current language, default: ISO-date */ public function getDate($date) { - return date(i18n("Y-m-d"), $date); + return $this->formatDate($date,$this->formatcfg->getdateformat()); } /** returns date in current language, default: ISO-date */ public function getDateTime($date) { - return date(i18n("Y-m-d h:i a"), $date); + return $this->formatDate($date,$this->formatcfg->getdatetimeformat()); } /** returns time in current language */ public function getTime($time) { - return date(i18n("h:i a"), $time); + return $this->formatDate($time,$this->formatcfg->gettimeformat()); } /** returns price in current language */ diff --git a/www/index.php b/www/index.php index a025efd..02aaaa7 100644 --- a/www/index.php +++ b/www/index.php @@ -25,7 +25,7 @@ if(isset($_GET["mode"])){ Session::setWebSession(); //initialize TWIG -$loader = new Twig_Loader_Filesystem(LanguageManager::singleton()->templateFolder()); +$loader = new Twig_Loader_Filesystem(LanguageManager::singleton()->templateFolders()); $twig = new Twig_Environment($loader, $twigoptions ); foreach($twigextensions as $te){ $t='Twig_Extension_'.$te; @@ -107,11 +107,17 @@ try{ } }catch(Exception $ex){ error_log($ex->getMessage()); - $p=$twig->loadTemplate("error.html"); + try{ + $p=$twig->loadTemplate("error.html"); + }catch(Exception $ex2){ + $twig->setLoader(new Twig_Loader_String); + $p=$twig->loadTemplate("{{ErrorText}}

\n{{ErrorTrace}}\n
"); + } $e=$basevars; - if($WebShowErrors) + if($WebShowErrors){ $e["ErrorText"]=$ex->getMessage(); - else + $e["ErrorTrace"]=$ex->getTraceAsString(); + }else $e["ErrorText"]=translate("WebSite","An error occured, contact the server admin for details."); $page=$p->render($e); } diff --git a/www/template/de/format.cfg b/www/template/de/format.cfg new file mode 100644 index 0000000..d24d6cb --- /dev/null +++ b/www/template/de/format.cfg @@ -0,0 +1,26 @@ +# This is the local Formatting Configuration for the German language +# it sets new defaults for the properties that are different in German +# +# see ../format.cfg for syntax help + +# Dies ist die deutsche Formatierungs-Konfiguration. +# siehe ../format.cfg für syntaktische Erklärungen + +WeekDays "Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag" +ShortWeekDays "So Mo Di Mi Do Fr Sa" + +Months "Januar Februar März April Mai Juni Juli August September Oktober November Dezember" +ShortMonths "Jan Feb Mär Apr Mai Jun Jul Aug Sep Okt Nov Dez" + +#The format used for the time of day: +time "%h:%I" + +#The format used for expressing a date: +date "%D.%M.%Y" + +#The format used when full date and time display is requested, +datetime "%D.%M.%Y %h:%I" + +decimaldot "," +thousandseparator " " +thousanddigits "3" diff --git a/www/template/en/error.html b/www/template/en/error.html index f93aba2..4e21237 100644 --- a/www/template/en/error.html +++ b/www/template/en/error.html @@ -3,7 +3,13 @@

Error

-{{ErrorText}} +{{ErrorText}}

+ +{# have the following only in development mode! +It prints a full stack trace, which you probably do not want in production. #} +

+{{ErrorTrace}}
+

Back to Index diff --git a/www/template/en/format.cfg b/www/template/en/format.cfg index 41bf54d..96df022 100644 --- a/www/template/en/format.cfg +++ b/www/template/en/format.cfg @@ -5,8 +5,8 @@ #Names of the days of the week, long and abbreviated, # start with monday and must be exactly 7 entries long -WeekDays "Monday Tuesday Wednesday Thursday Friday Saturday Sunday" -ShortWeekDays "Mon Tue Wed Thu Fri Sat Sun" +WeekDays "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +ShortWeekDays "Sun Mon Tue Wed Thu Fri Sat" #Names of the months, long and abbreviated, the list must be 12 long Months "January February March April May June July August September October November December" diff --git a/www/template/format.cfg b/www/template/format.cfg index fb099f1..c3b5e0b 100644 --- a/www/template/format.cfg +++ b/www/template/format.cfg @@ -13,9 +13,9 @@ # if the parser finds something it cannot interpret it will abort the script and tell you #Names of the days of the week, long and abbreviated, -# start with monday and must be exactly 7 entries long -WeekDays "Monday Tuesday Wednesday Thursday Friday Saturday Sunday" -ShortWeekDays "Mon Tue Wed Thu Fri Sat Sun" +# start with sunday and must be exactly 7 entries long +WeekDays "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +ShortWeekDays "Sun Mon Tue Wed Thu Fri Sat" #Names of the months, long and abbreviated, the list must be 12 long Months "January February March April May June July August September October November December"