18591 Posts in 4875 Topics by 2285 members
General Questions
SilverStripe Forums » General Questions » How to translate date?
General questions about getting started with SilverStripe that don't fit in any of the categories above.
Moderators: martimiz, Howard, Sean, Ryan M., biapar, Willr, Ingo, swaiba
|
Page:
1
|
Go to End | |
| Author | Topic: | 1648 Views |
-
How to translate date?

28 July 2009 at 10:41am
I use in template $Now.Day and got Thuesday. My problem is - the website is multilingual and I can't get this date in German - Dienstag (Thuesday). Has anybody any ideas how to solve this problem?
Thanks for any help!
Mindaugas
-
Re: How to translate date?

28 July 2009 at 8:38pm Last edited: 28 July 2009 8:44pm
One Solution is to write in /sapphire/core/model/fieldtypes/Date.php, a new function like
function German() {
if($this->value)
return strftime('%e. %B %G', strtotime($this->value));
}
(in the template use it with .German for Example $Now.German)and where is the translation?
with setlocalefor example: add in _config.php
setlocale (LC_TIME,"de_DE");
have a look on http://at.php.net/manual/de/function.date.php and especiallyhttp://at.php.net/manual/de/function.strftime.php for the format strings and the difference between date() and strftime().
Anyway, the wanted locale has to be installed on the system. -
Re: How to translate date?

28 July 2009 at 11:57pm
I use the following in the templates of a Dutch site:
$Date.FormatI18N(%e %B %Y)
-
Re: How to translate date?

29 July 2009 at 9:44am
Thanks you guys a lot for the help, but it doesn't worked for me. So, I did it with js and currentlang function:
<% if CurrentLang = sv %>
<script type="text/javascript">
<!--
var m_names = new Array("Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag");
var d = new Date();
var curr_date = d.getDate();
var curr_weekday = d.getDay();
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
document.write(m_names[curr_weekday]);
//-->
</script>
<% end_if %>Hope it helps for somebody also
-
Re: How to translate date?

24 November 2010 at 2:14am
here is a better but not perfect solution. I've also expand the Date class -> /sapphire/core/model/fieldtypes/Date.php
// Bugfix to translate english month names to current locale
function TranslatedMonth() {
if($this->value)
$currentMonth = '';
//echo Translatable::get_current_locale().' -> '.(int)strftime('%m', strtotime($this->value));
if (Translatable::get_current_locale() == 'de_DE') { // german
$month = array(1 => "Januar",
2 => "Februar",
3 => "März",
4 => "April",
5 => "Mai",
6 => "Juni",
7 => "Juli",
8 => "August",
9 => "September",
10 => "Oktober",
11 => "November",
12 => "Dezember");
$currentMonth = $month[(int)strftime('%m', strtotime($this->value))];
} else {
$currentMonth = strftime('%B', strtotime($this->value));
}
return $currentMonth;
}You can add another elseif for your language translation.
The better way should be to include the language files with its translation for every month and day...
| 1648 Views | ||
|
Page:
1
|
Go to Top |


