Tijdelijke locale
Gepost door Richard van Velzen op 25-08-2011 16:26.
Dit is een simpel snippet dat ik dagelijks gebruik. In meertalige applicaties komt het vaak voor dat je zo nu en dan even moet schakelen met de locale (bijvoorbeeld een Engelstalige tekst in een Nederlandse pagina).
Vooral als je dit zo vaak doet dat je de weg kwijtraakt, en niet meer weet welke locale je na het anderstalige stuk nodig hebt, kan dit uitkomst bieden. Het biedt simpelweg de mogelijkheid om tijdelijk een andere locale toe te passen.
De code spreekt redelijk voor zich, volgens mij, er zijn drie argument:
- $func - het eerste argument is altijd een functie waarbinnen de andere locale moet worden toegepast
- $locale - de locale, vanzelfsprekend. Volgt dezelfde regels als setlocale( ) zelf.
- $category - wederom, hetzelfde als bij setlocale( )
Veel plezier en succes! Commentaar en kritiek is uiteraard welkom :-)
Bestanden van dit script
locale_test.php
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php
require 'locale.php';
$output = function () {
return trim(strftime('%A'));
};
setlocale(LC_ALL, 'de_DE');
verify('Donnerstag', $output());
verify('donderdag', locale($output, 'nl_NL'));
verify('Thursday', locale($output, 'en_GB'));
verify('Donnerstag', $output());
function verify($wanted, $given) {
if ($wanted !== $given) {
exit($wanted . ' wanted, ' . $given . ' given' . PHP_EOL);
}
}
|
locale.php
| 1 2 3 4 5 6 7 8 9 10 | <?php
function locale($func, $locale, $category = LC_ALL) {
$oldLocale = setlocale($category, '0');
setlocale($category, $locale);
$result = $func();
setlocale($category, $oldLocale);
return $result;
}
|
Commentaar
26-08-2011 16:44
26-08-2011 16:48
27-08-2011 20:58
29-08-2011 09:58


