Avatar billede starter Praktikant
08. august 2004 - 12:50 Der er 16 kommentarer og
2 løsninger

Oversæt måned til dansk

Hej

Jeg har en kalender, hvor jeg gerne vil have månederne returneret på dansk. Er der nogen som kan hjælpe mig med hvordan jeg skal gøre?

Jeg har ledt og ledt og kan ikke finde noget jeg kan brúge. Jeg forestiller mig at jeg kan skrive noget i den stil:

if ($month)="January"
return "Januar"

Men hvordan præcis skal jeg skrive det?
Avatar billede avminarm Juniormester
08. august 2004 - 12:59 #1
du kan lave et array med alle de danske navne:

$dkmdr = array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December");

og måneden:
$md = date("m"); //måned med 2 cifre f.eks 01 - 12

og udskriv
echo $dkmdr[$md];

det skulle virke ;o)
Avatar billede hmortensen Nybegynder
08. august 2004 - 13:02 #2
$months = array(1 => 'Januar ', 'Februar ', 'Marts ', 'April', 'Maj', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'December');
echo $months[date("n")];
Avatar billede hmortensen Nybegynder
08. august 2004 - 13:06 #3
avminarm, du skal bruge n så der ikke er leading zero, og sætte først index til 1, eller trække en fra ved udskrift før det virker
Avatar billede starter Praktikant
08. august 2004 - 13:19 #4
Nu er jeg desværre ikke nogen ørn til det her og kan ikke finde ud af hvor jeg skal sætte det ind. Jeg kan godt se, at hvis jeg sætter

$months = array(1 => 'Januar ', 'Februar ', 'Marts ', 'April', 'Maj', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'December');
echo $months[date("n")];

ind så skriver den denne måneden på dansk, men den skal jo gerne skifte når jeg vælger en anden måned og skal også stå på de rigtige steder.

Min side ser sådan ud:

<?


  require "layout.inc.php";
  require ".dbaccess.inc";


  if (!isset($month) || $month == "" || $month > 12 || $month < 1)
  {
      $month = date("m");
  }
  if (!isset($year) || $year == "" || $year < 2004 || $year > 2068)
  {
      $year = date("Y");
  }

  $timestamp = mktime(0, 0, 0, $month, 1, $year);
 
  $current = date("F Y", $timestamp);

  if ($month < 2)
  {
      $prevmonth = 12;
      $prevyear = $year - 1;
  }
  else
  {
      $prevmonth = $month - 1;
      $prevyear = $year;
  }

  if ($month > 11)
  {
      $nextmonth = 1;
      $nextyear = $year + 1;
  }
  else
  {
      $nextmonth = $month + 1;
      $nextyear = $year;
  }

  $backward = date("F Y", mktime(0, 0, 0, $prevmonth, 1, $prevyear));
  $forward = date("F Y", mktime(0, 0, 0, $nextmonth, 1, $nextyear));

  $first = date("w", mktime(0, 0, 0, $month, 1, $year));
 
  $lastday = 28;
 
  for ($i=$lastday;$i<32;$i++)
  {
      if (checkdate($month, $i, $year))
      {
        $lastday = $i;
      }
  }
 
  function AddDay($fday, $fmonth, $fyear, $fvar)
  {
      if (!isset($fday) || $fday == "")
      {
        echo '    <TD class="calendar" align="left" valign="top" width=90 height=70>
        &nbsp;
';
      }
      else
      {
        $schurl = 'schedule.php?day='.$fday.'&month='.$fmonth.'&year='.$fyear;
        if (date("m") == $fmonth && date("Y") == $fyear && date("j") == $fday)
        {
            echo '    <TD ID="day'.$fday.'" class="curday" style="cursor: hand" align="left" valign="top" width=90 height=70
        onMouseOver="tdmouseover(\'day'.$fday.'\')"; onMouseOut="tdcurmouseout(\'day'.$fday.'\')";
        onClick="window.open(\''.$schurl.'\', \'schedule\', \'width=534,height=518,scrollbars=yes,resizable=yes\')">
';
        }
        else
        {
            echo '    <TD ID="day'.$fday.'" class="calendar" style="cursor: hand" align="left" valign="top" width=90 height=70
        onMouseOver="tdmouseover(\'day'.$fday.'\')"; onMouseOut="tdmouseout(\'day'.$fday.'\')";
        onClick="window.open(\''.$schurl.'\', \'schedule\', \'width=534,height=518,scrollbars=yes,resizable=yes\')">
';
        }
        echo '        <b>'.$fday.'</b><br>
';
        if (isset($fvar) && $fvar != "")
        {
            echo '        <A class=\'calendar\' style="cursor: hand" onClick="java script:window.open(\''.$schurl.'\',
        \'schedule\', \'width=534,height=518,scrollbars=yes,resizable=yes\')">
';
            echo '        '.$fvar.'
        </A>';
        }
      }
      echo '    </TD>
';
  }

  function FillDay($caldb, $dayofweek, $dayofmonth, $thismonth, $thisyear)
  {
      $textbody = '';
      $nr = $caldb->GetByDate($thismonth, $dayofmonth, $thisyear);
      for ($k=0;$k<$nr;$k++)
      {
        $caldb->next_record();
        $textbody.= $caldb->f('shortevent').'<br>';
      }
      $nr = $caldb->GetYearly($thismonth, $dayofmonth);
      for ($k=0;$k<$nr;$k++)
      {
          $caldb->next_record();
          $textbody.= $caldb->f('shortevent').'<br>';
      }
      $nr = $caldb->GetYearlyRecurring($thismonth, $dayofweek);
      for ($k=0;$k<$nr;$k++)
      {
          $caldb->next_record();
          $test = $dayofmonth / 7;
          $periodlow = $caldb->f('period') - 1;
          if ($test <= $caldb->f('period') && $test > $periodlow)
          {
            $textbody.= $caldb->f('shortevent').'<br>';
          }
      }
      $nr = $caldb->GetMonthly($dayofmonth);
      for ($k=0;$k<$nr;$k++)
      {
          $caldb->next_record();
          $textbody.= $caldb->f('shortevent').'<br>';
      }
      $nr = $caldb->GetMonthlyRecurring($dayofweek);
      for ($k=0;$k<$nr;$k++)
      {
          $caldb->next_record();
          $test = $dayofmonth / 7;
          $periodlow = $caldb->f('period') - 1;
          if ($test <= $caldb->f('period') && $test > $periodlow)
          {
            $textbody.= $caldb->f('shortevent').'<br>';
          }
      }
      $nr = $caldb->GetWeekly($dayofweek);
      for ($k=0;$k<$nr;$k++)
      {
        $caldb->next_record();
        $textbody.= $caldb->f('shortevent').'<br>';
      }
      return $textbody;
  }

  echo '<HTML>
<HEAD>
  <TITLE>'.$calender_title.'</TITLE>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">';
  echo '<STYLE TYPE="text/css">
    <!--
        BODY {background-color: #'.$background_color.'; border-style: none; border-width: 0px; color: #'.$plain_text_color.';
            font-family: Arial; font-size: 12px; font-style: normal; margin: 0px; padding: 4px;
            text-align: left; text-decoration: none; text-indent: 0px}
        A {border-style: none; border-width: 0px; color: #'.$link_color.'; font-family: Arial; font-size: 12px;
            font-style: normal; margin: 0px; padding: 0px; text-align: left; text-decoration: none;
            text-indent: 0px}
        A.normal {font-size: 12px; text-decoration: underline}
        A.calendar {color: #'.$calendar_link_color.'; font-size:10px}
        A.bottom {color: #'.$link_color.'; font-size:10px}
        P {font-size: 10px; text-align:center; color: #'.$link_color,'}
        IMG {border-style: none; border-width: 0px; margin: 0px; padding: 0px}
        TABLE {border-style: none; margin: 0px; padding: 0px; border-width: none; font-size: 12px; text-indent: 0px;
            font-weight: normal; width: 630px; background-color: #'.$calendar_bg_color.'; color: #'.$plain_text_color.'}
        TABLE.top {width: 100%; height: 60px}
        TABLE.form (width: 100%; height: 60px; text-align: center; border-style:none; border-width: 0px;
            background-color: #'.$background_color.'; color: #'.$plain_text_color.'}
        TR {border-style: none; border-width: 0px; margin: 0px; padding: 0px}
        TD {border-style: solid; border-width: thin; margin: 0px; padding: 0px; border-color: #'.$calendar_border_color.';
            font-weight: normal; background-color: #'.$calendar_bg_color.'}
        TD.top {padding: 4px; font-size: 16px; height: 60px; text-align:center; font-weight: bold;
            border-style: none; border-width: 0px}
        TD.ends {padding: 4px; font-size: 12px; height: 60px; text-align: center; border-style: none;
            border-width: 0px; font-weight: bold}
        TD.form {padding: 0px; font-size: 12px; border-style: none; border-width: 0px;
            background-color: #'.$background_color.'; color: #'.$plain_text_color.'}
        TD.days {padding: 2px; font-size: 12px; width: 90px; height: 40px; text-align:center; font-weight: bold}
        TD.curday {width: 90px; text-align: left; font-size: 10px; height: 70px; background-color: #'.$current_day_color.'}
        TD.calendar {width: 90px; text-align: left; font-size: 10px; height: 70px}
    -->
    </STYLE>
';
    echo '
    <SCRIPT LANGUAGE="JavaScript">
    <!--
        var isIE;
        isIE = (document.all) ? true : false;

        function tdmouseover(itemID)
        {
          if(isIE)
          {
              var theObj = eval("document.all." + itemID);
           
              theObj.style.backgroundColor = \'#'.$mouse_over_color.'\';
          }
        }

        function tdmouseout(itemID)
        {
          if(isIE)
          {
              var theObj = eval("document.all." + itemID);

              theObj.style.backgroundColor = \'#'.$calendar_bg_color.'\';
          }
        }
       
        function tdcurmouseout(itemID)
        {
          if(isIE)
          {
              var theObj = eval("document.all." + itemID);

              theObj.style.backgroundColor = \'#'.$current_day_color.'\';
          }
        }
    //-->
    </SCRIPT>
</HEAD>
';
    echo '<BODY TOPMARGIN=0 LEFTMARGIN=0 MARGINHEIGHT=0 MARGINWIDTH=0>
    <CENTER>
    <TABLE cellspacing=0 cellpadding=0 width=560 border=0>
    <TR>
    <TD class="form" align="center" valign="bottom" width="100%" COLSPAN=7>
        <FORM METHOD="post" ACTION="calendar.php">
        <TABLE class="form" cellspacing=0 cellpadding=0 width="100%" border=0>
        <TR>
        <TD class="form" align="left" valign="bottom">
            <b>Dato i dag:</b> '.date("F j, Y").'

        </TD>
        <TD class="form" align="left" valign="bottom">
            <b>Måned:</b> <select name="month">
';
            for ($j=1;$j<=12;$j++)
            {
              echo'<option value='.$j;
              if ($month == $j)
              {
                  echo ' selected';
              }
              echo '>'.date("F", mktime(0, 0, 0, $j, 1, 0)).'
              ';
            }
            echo '            </select>           
                &nbsp;&nbsp;<b>År:</b> <select name="year">
';
            for ($j=2004;$j<=2068;$j++)
            {
              echo'<option value='.$j;
              if ($year == $j)
              {
                  echo ' selected';
              }
              echo '>'.$j.'
              ';
            }
            echo '            </select>
            &nbsp;&nbsp;<input type="submit" value="Vælg">           
        </TD>
        </TR>
        <TR>
        <TD class="form" align="right" valign="bottom" colspan=2>
            <A style="cursor: hand" onClick="java script:window.open(\'caladmin.php\', \'caladmin\',
                \'width=415,height=423,scrollbars=yes,resizable=yes\')"
                onMouseOver="window.status=\'\'">Administration</A>
        </TD>
        </TR>
        </TABLE>
        </FORM>
    </TD>   
    </TR>
    <TR>
    <TD align="center" valign="middle" height=60 COLSPAN=7>
        <TABLE class="top" cellspacing=0 cellpadding=0 width=560 border=0>
        <TR>
        <TD class="ends" nowrap align="center" valign="bottom">
            <A HREF="calendar.php?month='.$prevmonth.'&year='.$prevyear.'"><< '.$backward.'</a>
        </TD>
        <TD class="top" nowrap align="center" valign="middle" width=350>
';
  if (isset($calender_title_image) && $calender_title_image != '')
  {
      echo '            <img src="'.$calender_title_image.'">';
  }
  else
  {
      echo '            '.$calender_title;
  }
  echo '<br>'.$current.'
        </TD>
        <TD class="ends" nowrap align="center" valign="bottom">
            <A HREF="calendar.php?month='.$nextmonth.'&year='.$nextyear.'">'.$forward.' >></a>
        </TD>
        </TR>
        </TABLE>
    </TD>
    </TR>
    <TR>
    <TD class="days" nowrap align="center" valign="middle" width=90 height=40>
        Søndag
    </TD>
    <TD class="days" nowrap align="center" valign="middle" width=90 height=40>
        Mandag
    </TD>
    <TD class="days" nowrap align="center" valign="middle" width=90 height=40>
        Tirsdag
    </TD>
    <TD class="days" nowrap align="center" valign="middle" width=90 height=40>
        Onsdag
    </TD>
    <TD class="days" nowrap align="center" valign="middle" width=90 height=40>
        Torsdag
    </TD>
    <TD class="days" nowrap align="center" valign="middle" width=90 height=40>
        Fredag
    </TD>
    <TD class="days" nowrap align="center" valign="middle" width=90 height=40>
        Lørdag
    </TD>
    </TR>
';
  $calday = 1;
  while ($calday <= $lastday)
  {
      echo '<TR>';
      for ($j=0;$j<7;$j++)
      {
        if ($calday == 1)
        {
            if ($first == $j)
            {
              $info = FillDay($db, $j, $calday, $month, $year);
              AddDay($calday, $month, $year, $info);
              $calday++;
            }
            else
            {
              AddDay('', '', '', '');
            }
        }
        else
        {
            if ($calday > $lastday)
            {
              AddDay('', '', '', '');
            }
            else
            {
              $info = FillDay($db, $j, $calday, $month, $year);
              AddDay($calday, $month, $year, $info);
              $calday++;
            }
        }
      }
      echo '</TR>';
  }
  echo '    </TABLE>
    </CENTER>
</BODY>
</HTML>';
?>
Avatar billede hmortensen Nybegynder
08. august 2004 - 13:29 #5
hvor skal den stå og hvilken variable bestemmer hvilken måned det er ?
(gider ikke kigge alt det der igennem)
Avatar billede starter Praktikant
08. august 2004 - 14:22 #6
Ja, det er jo det som er problemet... Jeg forestillede mig egentlig, at man kunne skrive noget i HEAD, som var generelt for hele dokumentet - men det kan man måske ikke?
Avatar billede starter Praktikant
08. august 2004 - 15:44 #7
OK, nu har jeg fundet de steder hvor måneder forekommer (hvis man ikke kan skrive en generel kode). Den vises i alt 5 steder på siden.

Øverst ses den måned man har valgt:

echo '<br>'.$current.'



Derefter vises datoen i dag:

        <TD class="form" align="left" valign="bottom">
            <b>Dato i dag:</b> '.date("F j, Y").'

        </TD>



Her kan man vælge en måned i en rulleliste:

        <TD class="form" align="left" valign="bottom">
            <b>Måned:</b> <select name="month">
';
            for ($j=1;$j<=12;$j++)
            {
              echo'<option value='.$j;
              if ($month == $j)
              {
                  echo ' selected';
              }
              echo '>'.date("F", mktime(0, 0, 0, $j, 1, 0)).'
              ';
            }
            echo '            </select>           
                &nbsp;&nbsp;<b>År:</b> <select name="year">
';
            for ($j=2004;$j<=2068;$j++)
            {
              echo'<option value='.$j;
              if ($year == $j)
              {
                  echo ' selected';
              }
              echo '>'.$j.'
              ';
            }
            echo '            </select>
            &nbsp;&nbsp;<input type="submit" value="Vælg">           
        </TD>



Her kan man gå til forrige måned:

        <TD class="ends" nowrap align="center" valign="bottom">
            <A HREF="calendar.php?month='.$prevmonth.'&year='.$prevyear.'"><< '.$backward.'</a>
        </TD>



og til næste måned:

        <TD class="ends" nowrap align="center" valign="bottom">
            <A HREF="calendar.php?month='.$nextmonth.'&year='.$nextyear.'">'.$forward.' >></a>
        </TD>
Avatar billede coderdk Praktikant
08. august 2004 - 20:45 #8
setlocale( LC_TIME, "da_DK" );

eller på windows:

setlocale( LC_TIME, "dan" );

echo "Måneden er " . date( "F" );
Avatar billede coderdk Praktikant
08. august 2004 - 20:46 #9
Du burde bare kunne smide den setlocale jeg har skrevet (en af dem) op i toppen af dit script.
Avatar billede starter Praktikant
08. august 2004 - 20:55 #10
Det er meget fint, den skriver godt nok "Måneden er August", men månederne på resten af siden bliver stadig returneret på engelsk. Jeg kunne jo godt tænke mig at ændre månederne generelt - kan det ikke lade sig gøre?
Avatar billede coderdk Praktikant
08. august 2004 - 21:09 #11
Prøvede du at sætte

setlocale( LC_TIME, "da_DK" );

eller på windows:

setlocale( LC_TIME, "dan" );

ind i toppen af dit script? Jeg kan se at dit script bruger date("F") til at vise måneden med, så det burde virke.
Avatar billede starter Praktikant
08. august 2004 - 21:15 #12
Ja, jeg har prøvet - og lige prøvet igen - begge dele returnere bare "August" øverst på siden og ændre ikke månederne på resten af siden.
Avatar billede coderdk Praktikant
08. august 2004 - 22:35 #13
Hmm, du skal ikke smide min echo linie ind... Kan du se om der er en setlocale et andet sted i scriptet eller i en include/require under det sted du har skrevet den?
Avatar billede starter Praktikant
09. august 2004 - 06:13 #14
Nej, det er der ikke...
Avatar billede q^bone Nybegynder
30. november 2005 - 19:29 #15
setlocale() virker ikke med date()
kun med strftime()
Avatar billede q^bone Nybegynder
30. november 2005 - 19:29 #16
afaik
Avatar billede coderdk Praktikant
30. november 2005 - 19:32 #17
Doh! Ja det er korrekt! Så:

setlocale( LC_TIME, "da_DK" );

eller på windows:

setlocale( LC_TIME, "dan" );

echo "Måneden er " . strftime( "%B" );
Avatar billede starter Praktikant
01. december 2005 - 19:59 #18
Hmmmm, jeg har for længst opgivet projektet med datoen, men jeg deler lige pointene mellem jer som tak for ulejligheden :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester