A mai napon volt alkalmam elszórakozni azzal, hogy átállítstam a fórumban/naptárban (és még sok más helyen) lévő hónap és nap neveket magyarra.
Az alap megoldás az lenne, hogy a szerver "locale" funkcióját használva átállítom a szerver nyelvét magyarra (hu vagy hu_HU). De nekem erre nem volt lehetőségem (illetve egyszer már próbáltam, de nem működött), így más utat kerestem. A moodle.org fórumán találtam rá a megoldásra.
A moodlelib.php fájlba kell beleírni (lib könyvtáron belül van).
A dátumot alapból így rakja össze (valahol az 1000-1100. sornál található a fájlban):
/// If we are running under Windows convert from windows encoding to UTF-8
/// (because it's impossible to specify UTF-8 to fetch locale info in Win32)
if ($CFG->ostype == 'WINDOWS') {
if ($localewincharset = get_string('localewincharset')) {
$textlib = textlib_get_instance();
$datestring = $textlib->convert($datestring, $localewincharset, 'utf-8');
}
}
return $datestring;
}
A return parancs elé kell beírni azt a php kódot, amivel a $datestring változóban lévő angol hónap és napneveket lecseréli magyarra. Mivel a php fájl nem utf-8as kódolású (és nem is szabad átállítani!!), így az ékezeteket a megfelelő html kódokkal kell helyettesíteni. A végeredmény így néz ki:
/// If we are running under Windows convert from windows encoding to UTF-8
/// (because it's impossible to specify UTF-8 to fetch locale info in Win32)
if ($CFG->ostype == 'WINDOWS') {
if ($localewincharset = get_string('localewincharset')) {
$textlib = textlib_get_instance();
$datestring = $textlib->convert($datestring, $localewincharset, 'utf-8');
}
}
//Section for translating month names to Hungarian
if (current_language()=='hu_utf8') {
$datestring = str_replace('January','január',$datestring);
$datestring = str_replace('February','február',$datestring);
$datestring = str_replace('March','március',$datestring);
$datestring = str_replace('April','április',$datestring);
$datestring = str_replace('May','május',$datestring);
$datestring = str_replace('June','június',$datestring);
$datestring = str_replace('July','július',$datestring);
$datestring = str_replace('August','augusztus',$datestring);
$datestring = str_replace('September','szeptember',$datestring);
$datestring = str_replace('October','október',$datestring);
$datestring = str_replace('November','november',$datestring);
$datestring = str_replace('December','december',$datestring);
$datestring = str_replace('Monday','hétfõ',$datestring);
$datestring = str_replace('Tuesday','kedd',$datestring);
$datestring = str_replace('Wednesday','szerda',$datestring);
$datestring = str_replace('Thursday','csütörtök',$datestring);
$datestring = str_replace('Friday','péntek',$datestring);
$datestring = str_replace('Saturday','szombat',$datestring);
$datestring = str_replace('Sunday','vasárnap',$datestring);
}
//End of section for translating month names to Hungarian
return $datestring;
}
Nálam működik 1.9-es verzión, de amint a fórumon olvastam több verzióval is kipróbálták és megfelelő volt!
Lenne egy kérdésem is!
Nem lehetne ennek egy nyelvi fájlt készíteni? Olvastam, hogy azért veszi a szerverről az adatokat, mert az nagyságrendekkel gyorsabb, mintha a php-ben
kellene átállítani (ez tényleg igaz? nagyságrendekkel?).
Várom a hozzászólásokat!
(Szerkesztette Vágvölgyi Csaba - 2008. március 28., péntek, 11:36)