setlocale

(PHP 4, PHP 5, PHP 7, PHP 8)

setlocaleYereli ayarlar

Açıklama

setlocale(int $sınıf, string $yereller, string ...$kalan): string|false

İsimli bağımsız değişkenleri desteklemeyen sözdizimi:

setlocale(int $sınıf, array $yerel_dizisi): string|false

Yerel bilgisini ayarlar.

Uyarı

Evre başına değil süreç başına yerel bilgisi ayarlanır. Çok evreli bir sunucu çalıştırıyorsanız, betiğinizde setlocale() işlevini hiç çağırmadığınız halde yerel ayarlarında ani değişiklikler olduğunu gözlemlemişsinizdir. Bunun sebebi aynı anda aynı süreç altında başka evrelerde başka betiklerin çalışması ve bunların süreç genelinde geçerli olan setlocale() kullanımlarıdır. Windows üzerinde PHP 7.0.5 itibariyle yerel bilgisi evre başına sağlanmaktadır.

Bağımsız Değişkenler

sınıf

sınıf olarak yerel ayarıyla ilgili belli bir işlevsellik belirten şu sabitlerden biri belirtilebilir:

yereller

Eğer"" şeklinde boş bir dizge belirtilmişse, yerel isimleri yukarıdaki sınıflarla aynı isimdeki ortam değişkenlerinden veya "LANG" ortam değişkeninden alınır.

Eğer yereller "0" ise, yerel ayarı değiştirilmeden mevcut ayar döndürülür.

Eğer yereller için birden fazla bağımsız değişken belirtilmişse, yeni yerel başarıyla ayarlanana kadar belirtilen her bağımsız değişken tek tek denenir. Yerel isimlerinin farklı sistemlerde farklı isimlerde bulunması durumunda veya kullanılabilir yerelin bulunamaması olasılığına karşı son çareleri belirtmek için kullanılır.

kalan

Yerel ayarları başarılı olana kadar denenecek seçimlik dizge bağımsız değişkenler.

yerel_dizisi

Yeni yerel başarıyla ayarlanana kadar belirtilen her dizi elemanı tek tek denenir. Yerel isimlerinin farklı sistemlerde farklı isimlerde bulunması durumunda veya kullanılabilir yerelin bulunamaması olasılığına karşı son çareleri belirtmek için kullanılır.

Bilginize:

Windows'ta, setlocale(LC_ALL, '') kullanımında, sistemin bölgesel ayarlar/dil ayarlarında (Denetim Masasından erişilebilir) belirtilmiş yerelin ismi kullanılır.

Dönen Değerler

Ayarlama yapılabilmişse yeni yerel ismi, platformunuzda yereller işlevsel değilse, belirtilen yerel yoksa veya sınıf ismi geçersizse false döner.

Geçersiz bir sınıf ismi ayrıca bir uyarı üretilmesine sebep olur. Sınıf ve yerel isimleri » RFC 1766 ve » ISO 639'da bulunabilir. Farklı sistemler yereller için farklı isimleme şemaları kullanırlar.

Bilginize:

setlocale() işlevinin dönüş değeri PHP'nin üzerinde çalıştığı sisteme bağlıdır. Sistemin setlocale işlevinin döndürdüğü değeri döndürür.

Örnekler

Örnek 1 - setlocale() örnekleri

<?php
// Yereli Türkçe yapalım
setlocale(LC_ALL, 'tr_TR.UTF-8');

// Çıktısı: 22 Aralık 1978 Cuma
echo strftime("%e %B %Y %A\n", mktime(0, 0, 0, 12, 22, 1978));

// Türkçe için farklı yerel isimleri deneyelim
$loc_tr = setlocale(LC_ALL, 'tr_TR.UTF-8', 'tr_TR', 'tr', 'turkish');
echo
"Türkçe için tercih edilen yerel ismi: '$loc_tr\n'";
?>

Örnek 2 - Windows için setlocale() örnekleri

<?php
// Yereli Felemenkçe yapalım
setlocale(LC_ALL, 'nld_nld');

// Çıktısı: vrijdag 22 december 1978
echo strftime("%A %d %B %Y", mktime(0, 0, 0, 12, 22, 1978));

// Almanca için farklı yerel isimleri deneyelim
$loc_de = setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu');
echo
"Almanca için tercih edilen yerel ismi: '$loc_de'";
?>

Notlar

İpucu

Windows kullanıcıları Microsoft'un MSDN sitesinde yereller dizgeleri hakkında bilgi bulabilirler. Desteklenen dil dizgeleri »  http://msdn.microsoft.com/en-us/library/39cwe7zf.aspx adresinde desteklenen ülke/bölge dizgeleri ise »  http://msdn.microsoft.com/en-us/library/cdax410z.aspx adresinde bulunabilir.

add a note

User Contributed Notes 34 notes

up
173
r dot nospam dot velseboer at quicknet dot nospam dot nl
22 years ago
be careful with the LC_ALL setting, as it may introduce some unwanted conversions. For example, I used setlocale (LC_ALL, "Dutch");to get my weekdays in dutch on the page. From that moment on (as I found out many hours later) my floating point values from MYSQL where interpreted as integers because the Dutch locale wants a comma (,) instead of a point (.) before the decimals. I tried printf, number_format, floatval.... all to no avail. 1.50 was always printed as 1.00 :(When I set my locale to : setlocale (LC_TIME, "Dutch");my weekdays are good now and my floating point values too. I hope I can save some people the trouble of figuring this out by themselves.Rob
up
52
russ at eatmymonkeydust dot com
13 years ago
If you are looking for a getlocale() function simply pass 0 (zero) as the second parameter to setlocale().Beware though if you use the category LC_ALL and some of the locales differ as a string containing all the locales is returned:<?phpecho setlocale(LC_ALL, 0);// LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=C;LC_PAPER=C;LC_NAME=C;// LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=C;LC_IDENTIFICATION=Cecho setlocale(LC_CTYPE, 0);// en_US.UTF-8setlocale(LC_ALL, "en_US.UTF-8");echo setlocale(LC_ALL, 0);// en_US.UTF-8?>If you are looking to store and reset the locales you could do something like this:<?php$originalLocales = explode(";", setlocale(LC_ALL, 0));setlocale(LC_ALL, "nb_NO.utf8");// Do somethingforeach ($originalLocales as $localeSetting) {  if (strpos($localeSetting, "=") !== false) {    list ($category, $locale) = explode("=", $localeSetting);  }  else {    $category = LC_ALL;    $locale   = $localeSetting;  }  setlocale($category, $locale); }?>The above works here (Ubuntu Linux) but as the setlocale() function is just wrapping the equivalent system calls, your mileage may vary on the result.
up
12
epistomai at gmail dot com
5 years ago
setlocale(LC_MONETARY, 'en_US') doesn't work anymore (at least in PHP Version 7.3.8).I've used 'en_US.UTF-8' instead
up
15
Shashakhmetov Talgat
9 years ago
//Fix encoding for russian locale on windows$locale = setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251');function strftime_fix($format, $locale, $timestamp = time()){    // Fix %e for windows    if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {        $format = preg_replace('#(?<!%)((?:%%)*)%e#', '\1%#d', $format);    }    // convert    $date_str = strftime($format, $timestamp);    if (stripos($locale, "1251") !== false) {      return iconv("windows-1251","utf-8", $date_str);    } elseif (stripos($locale, "1252") !== false) {      return iconv("windows-1252","utf-8", $date_str);    } else {      return $date_str;    }}
up
18
Kari Sderholm aka Haprog
16 years ago
It took me a while to figure out how to get a Finnish locale correctly set on Ubuntu Server with Apache2 and PHP5.At first the output for "locale -a" was this:Cen_US.utf8POSIXI had to install a finnish language pack with"sudo apt-get install language-pack-fi-base"Now the output for "locale -a" is:Cen_US.utf8fi_FI.utf8POSIXThe last thing you need to do after installing the correct language pack is restart Apache with "sudo apache2ctl restart". The locale "fi_FI.utf8" can then be used in PHP5 after restarting Apache.For setting Finnish timezone and locale in PHP use:<?phpdate_default_timezone_set('Europe/Helsinki');setlocale(LC_ALL, array('fi_FI.UTF-8','fi_FI@euro','fi_FI','finnish'));?>
up
14
brice/axice/be
16 years ago
Pay attention to the syntax.
- UTF8 without dash ('-')
- locale.codeset and not locale-codeset.

Stupid newbie error but worth knowing them when starting with gettext.

<?php
$codeset = "UTF8";  // warning ! not UTF-8 with dash '-'
        
// for windows compatibility (e.g. xampp) : theses 3 lines are useless for linux systems 

putenv('LANG='.$lang.'.'.$codeset);
putenv('LANGUAGE='.$lang.'.'.$codeset);
bind_textdomain_codeset('mydomain', $codeset);

// set locale
bindtextdomain('mydomain', ABSPATH.'/locale/');
setlocale(LC_ALL, $lang.'.'.$codeset);
textdomain('mydomain');
?>

where directory structure of locale is (for example) :
locale/fr_FR/LC_MESSAGES/mydomain.mo
locale/en_US/LC_MESSAGES/mydomain.mo

and ABSPATH is the absolute path to the locale dir

further note, under linux systems, it seems to be necessary to create the locale at os level using 'locale-gen'.
up
1
lingureanumanuel at yahoo dot com
3 years ago
for windowssetlocale(LC_ALL, 'Greenlandic_Greenland.1252');will return falseto make it work usesetlocale(LC_ALL, 'Kalaallisut_Greenland.1252');
up
9
pigmeu at pigmeu dot net
20 years ago
!!WARNING!!The "locale" always depend on the server configuration.i.e.:When trying to use "pt_BR" on some servers you will ALWAYS get false. Even with other languages.The locale string need to be supported by the server. Sometimes there are diferents charsets for a language, like "pt_BR.utf-8" and "pt_BR.iso-8859-1", but there is no support for a _standard_ "pt_BR".This problem occours in Windows platform too. Here you need to call "portuguese" or "spanish" or "german" or...Maybe the only way to try to get success calling the function setlocale() is:setlocale(LC_ALL, "pt_BR", "pt_BR.iso-8859-1", "pt_BR.utf-8", "portuguese", ...);But NEVER trust on that when making functions like date conversions or number formating. The best way to make sure you are doing the right thing, is using the default "en_US" or "en_UK", by not calling the setlocale() function. Or, make sure that your server support the lang you want to use, with some tests.Remember that: Using the default locale setings is the best way to "talk" with other applications, like dbs or rpc servers, too.[]sPigmeu
up
2
stepdate at gmail dot com
7 years ago
If you have Locales installed and things won't work check the spelling: for German all the comments suggested "setlocale(LC_TIME, "de_DE.utf8")", but it has to be "setlocale(LC_TIME, "de_DE.UTF-8")"-> UTF-8 instead of utf8.
up
2
aaaaa976 at gmail dot com
10 years ago
In Windows some times setlocale don't work, it return a empty array, buts the locale is set. I found that apache start before windows "load" locales, you must restart apache to solve this.
up
8
jose dot nobile at gmail dot com
10 years ago
For Windows users complaining about setlocale. The locale argument to the setlocale function takes the following form:setlocale( LC_ALL, "<language>_<country>.<code_page>" );in short, if you  want use for example: es_CO.UTF-8 it must be in Windows: Spanish_Colombia.1252The code page 1252 is ISO-8859-1 (windows-1252    ANSI Latin 1; Western European (Windows)Windows use different languages code from Unix, for example, es_CO becomes es-CO or Spanish_Colombia, also it doesn't support UTF-8 charset as is shown in their website: https://msdn.microsoft.com/en-us/library/x99tb11d(v=vs.140).aspx"The set of available locale names, languages, country/region codes, and code pages includes all those supported by the Windows NLS API except code pages that require more than two bytes per character, such as UTF-7 and UTF-8. If you provide a code page value of UTF-7 or UTF-8, setlocale will fail, returning NULL."Please check the updated website of language and code pages:https://msdn.microsoft.com/en-us/library/39cwe7zf(v=vs.140).aspxandhttps://msdn.microsoft.com/en-us//goglobal/bb895996Here a copy paste in case the link is removed:AfrikaansAlbanianArabic_Saudi_ArabiaArabic_IraqArabic_EgyptArabic_LibyaArabic_AlgeriaArabic_MoroccoArabic_TunisiaArabic_OmanArabic_YemenArabic_SyriaArabic_JordanArabic_LebanonArabic_KuwaitArabic_UAEArabic_BahrainArabic_QatarArmenianAzeri_LatinAzeri_CyrillicBasqueBelarusianBengali_IndiaBosnian_LatinBulgarianCatalanChinese_TaiwanChinese_PRCChinese_Hong_KongChinese_SingaporeChinese_MacauCroatianCroatian_Bosnia_HerzegovinaCzechDanishDivehiDutch_StandardDutch_BelgianEnglish_United_StatesEnglish_United_KingdomEnglish_AustralianEnglish_CanadianEnglish_New_ZealandEnglish_IrelandEnglish_South_AfricaEnglish_JamaicaEnglish_CaribbeanEnglish_BelizeEnglish_TrinidadEnglish_ZimbabweEnglish_PhilippinesEstonianFaeroeseFarsiFinnishFrench_StandardFrench_BelgianFrench_CanadianFrench_SwissFrench_LuxembourgFrench_MonacoGeorgianGalicianGerman_StandardGerman_SwissGerman_AustrianGerman_LuxembourgGerman_LiechtensteinGreekGujaratiHebrewHindiHungarianIcelandicIndonesianItalian_StandardItalian_SwissJapaneseKannadaKazakhKonkaniKoreanKyrgyzLatvianLithuanianMacedonianMalay_MalaysiaMalay_Brunei_DarussalamMalayalamMalteseMaoriMarathiMongolianNorwegian_BokmalNorwegian_NynorskPolishPortuguese_BrazilianPortuguese_StandardPunjabiQuechua_BoliviaQuechua_EcuadorQuechua_PeruRomanianRussianSami_InariSami_Lule_NorwaySami_Lule_SwedenSami_Northern_FinlandSami_Northern_NorwaySami_Northern_SwedenSami_SkoltSami_Southern_NorwaySami_Southern_SwedenSanskritSerbian_LatinSerbian_Latin_Bosnia_HerzegovinaSerbian_CyrillicSerbian_Cyrillic_Bosnia_HerzegovinaSlovakSlovenianSpanish_Traditional_SortSpanish_MexicanSpanish_Modern_SortSpanish_GuatemalaSpanish_Costa_RicaSpanish_PanamaSpanish_Dominican_RepublicSpanish_VenezuelaSpanish_ColombiaSpanish_PeruSpanish_ArgentinaSpanish_EcuadorSpanish_ChileSpanish_UruguaySpanish_ParaguaySpanish_BoliviaSpanish_El_SalvadorSpanish_HondurasSpanish_NicaraguaSpanish_Puerto_RicoSwahiliSwedishSwedish_FinlandSyriacTamilTatarTeluguThaiTswanaUkrainianTurkishUkrainianUrduUzbek_LatinUzbek_CyrillicVietnameseWelshXhosaZuluThe code pages identifiers:https://msdn.microsoft.com/en-us/library/windows/desktop/dd317756(v=vs.85).aspx
up
3
tomas dot hampl at gmail dot com
14 years ago
On Linux, setlocale() depends on the installed locales. To see which locales are available to PHP, run this from the terminal:"locale -a"Provided list are all locales that are available on your server for PHP to use. To add a new one, runlocale-gen <locale name> (this may need sudo / root permissions), for example to add a Czech locale, run something like this:"sudo locale-gen cs_CZ.utf8"Then you can use this locale declaration:setlocale(LC_ALL, 'cs_CZ.utf8');
up
5
Anonymous
19 years ago
The example from bruno dot cenou at revues dot org below shows the possibility, but I want to spell it out: you can add charset info to setlocale.Example:Into my utf-8-encoded page I want to insert the name of the current month, which happens to be March, in German "März" - with umlaut. If you use   setlocale(LC_TIME, 'de_DE');   echo strftime("%B");this will return "M&auml;rz", but that html-entity will look like this on a utf-8 page: "M?rz". Not what I want.But if you use   setlocale(LC_TIME, 'de_DE.UTF8');  // note the charset info !   echo strftime("%B");this returns "M√§rz", which, on utf-8, looks like it should: "März".
up
2
bryn AT lunarvis DOT com
17 years ago
Posting this in the hope it might be useful to others, as I could find very little info anywhere. If you want to use a Welsh locale and have the suitable language support installed, you pass 'cym' (abbreviated form of Cymraeg) to setlocale:<?phpsetlocale(LC_TIME, 'cym');$welsh= gmstrftime("%A, %B %Y - %H:%M",time());echo $welsh;?>The above certainly applies to Windows systems, but should also apply to Unix if the required support is installed.Cheers,Bryn.
up
3
data dot ocean dot italia at gmail dot com
12 years ago
Instead, using php with IIS, I had to use this line for Italian language...<?php setlocale(LC_ALL, 'Italian_Italy.1250'); ?>
up
2
RobQuist
11 years ago
In addition to russ, about getting / backing up the locale:I'm using this in unit-tests. I wanted to test something based on locale, and reset the locale after the tests were done.Yet there were some errors;* setlocale doesn't like strings anymore. You need to use constants.* Some contants don't exist anymore. Here's an updated piece of code:<?php$originalLocales = explode(";", setlocale(LC_ALL, 0));setlocale(LC_ALL, 'nl_NL.UTF-8');//Do something here//Recover to the default setting        $skipConstants = array( //these will be returned by setlocale(LC_ALL, 0), but don't exist anymore.            'LC_PAPER',            'LC_NAME',            'LC_ADDRESS',            'LC_TELEPHONE',            'LC_MEASUREMENT',            'LC_IDENTIFICATION'        );        foreach ($originalLocales as $localeSetting) {            if (strpos($localeSetting, "=") !== false) {                list ($category, $locale) = explode("=", $localeSetting);            } else {                $category = LC_ALL;                $locale   = $localeSetting;            }            if (!in_array($category, $skipConstants)) {                setlocale(constant($category), $locale); //Using strings is deprecated.            }        }?>
up
3
Periklis
17 years ago
In *some* Windows systems, setting LC_TIME only will not work, you must either set LC_ALL or both LC_CTYPE and LC_TIME. BUT if you have already set LC_TIME using setlocale earlier in the script, dates will not be affected! For example:<?phpsetlocale(LC_TIME, 'greek');setlocale(LC_CTYPE, 'greek');?>will not work, while <?phpsetlocale(LC_CTYPE, 'greek');setlocale(LC_TIME, 'greek');?>will do the job.
up
3
birkholz at web dot de
19 years ago
When i tried to get the current locale (e.g. after i set the lang to german with setlocale(LC_ALL, 'de_DE'); ), the following did not work on my suse linux 9.0-box:$currentLocale = setlocale(LC_ALL, NULL);This code did a reset to the server-setting.$currentLocale = setlocale(LC_ALL, 0); works perfectly for me, but the manual says NULL and 0 are equal in this case, but NULL seems to act like "".
up
1
tim dot peters at live dot com
6 years ago
Maybe obvious, but I would expect that setlocale constantes (LC_*) would be bitwise, but they're not.In example, doing this:<?php    setlocale(LC_TIME + LC_COLLATE, 'nl');    echo setlocale(LC_ALL, 0);?>would cause the following result:LC_CTYPE=C;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=nl;LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=C;LC_IDENTIFICATION=CNote that LC_MESSAGES has changed, instead of LC_TIME and LC_COLLATE. (Because LC_TIME + LC_COLLATE = LC_MESSAGES).Instead you would need to specify them individually, if you don't wish to use LC_ALL:<?php    setlocale(LC_TIME, 'nl');    setlocale(LC_COLLATE, 'nl');    echo setlocale(LC_ALL, 0);?> LC_CTYPE=C;LC_NUMERIC=C;LC_TIME=nl;LC_COLLATE=nl;LC_MONETARY=C;LC_MESSAGES=C;LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=C;LC_IDENTIFICATION=C
up
2
michal dot kocarek at brainbox dot cz
17 years ago
Note about using UTF-8 locale charset on Windows systems:

According to MSDN, Windows setlocale()'s implementation does not support UTF-8 encoding.

Citation from "MSDN setlocale, _wsetlocale" page (http://msdn.microsoft.com/en-us/library/x99tb11d.aspx):
The set of available languages, country/region codes, and code pages includes all those supported by the Win32 NLS API except code pages that require more than two bytes per character, such as UTF-7 and UTF-8. If you provide a code page like UTF-7 or UTF-8, setlocale will fail, returning NULL.

So basically, code like
<?php setlocale(LC_ALL, 'Czech_Czech Republic.65001'); // 65001 is UTF-8 codepage ?>
does not work on Windows at all.

(written in time of PHP 5.2.4)
up
3
mk at totu dot com
21 years ago
Be carefull - setting a locale which uses commas instead of dots in numbers may cause a mysql db not to understand the query:
<?php
setlocale(LC_ALL,"pl");
$price = 1234 / 100; // now the price looks like 12,34
$query = mysql_query("SELECT Id FROM table WHERE price='".$price."'");
?>
Even if there is a price 12.34 - nothing will be found
up
3
Leigh Morresi
16 years ago
Setting locale that is not supported by your system will result in some string operations returning a question mark "?" in your strings where it needs to perform transliteration.1) Always check the return of setlocale() to ensure it has set to something supported2) on Linux you can use the "locale -a" command to find a list of supported locales
up
2
garygendron at yahoo dot com
15 years ago
For a php Mysql query, you could also use, for french canadian, in this example :$query = 'SET lc_time_names = "fr_CA"';$result = mysql_query($query) or die("Query failed");$query = 'SELECT @@lc_time_names';$result = mysql_query($query) or die("Query failed");$query = 'SELECT id, created, YEAR(created) as year, MONTH(created) as month,' .' CONCAT_WS(" ", MONTHNAME(created), YEAR(created)) as archive' .            ' FROM #__TABLE as e' .' GROUP BY archive' .' ORDER BY id DESC'; Your data will be displayed in any locale setting you want. You may even $_GET[lc_time_name] from your multilanguage website.
up
2
szepeshazi at gmail dot com
18 years ago
For those of you who are unfortunate enough (like me) to work in Windows environment, and try to set the locale to a language _and_ to UTF-8 charset, and were unable to do it, here is a workaround.For example to output the date in hungarian with UTF-8 charset, this will work:    $dateString = "%B %d., %A";    setlocale(LC_ALL,'hungarian');    $res=strftime($dateString);    echo(iconv('ISO-8859-1', 'UTF-8', $res));If anybody knows how to set the locale on Windows to the equivalent of "hu_HU.UTF-8" on unix, please do tell me.
up
1
phcorp
14 years ago
To find the locale of a Unix system:<?php system('locale -a') ?>
up
1
internationalist
9 years ago
My script runs a loop that changes the locale (multilingual application). I've noticed that on some random occasion the locale still hasn't changed despite the setlocale() function being executed a step earlier. I had to add wait time for this condition. Interestingly enough, this was the case only with the 'nl_NL.UTF8' locale.<?php//some code$this->counter = 0;// some code$this->locale = 'nl_NL.UTF8';setlocale(LC_ALL, $this->locale);    $this->counter++;    if ($this->locale !== setlocale(LC_CTYPE, 0)) { // Locale not changed yet.      if ($this->counter > 10) {        return;      }      sleep(1);    }// some code?>
up
2
Un_passant
16 years ago
For debian/ubuntu, don't forget the charset UFT8. // Works on Ubuntu 8.04 Serversetlocale(LC_TIME, 'fr_FR.UTF8', 'fr.UTF8', 'fr_FR.UTF-8', 'fr.UTF-8');
up
1
Sven K
19 years ago
If your system doesn't show any installed locales by "locale -a", try installing them by "dpkg-reconfigure locales" (on debian).
up
2
info AT hipot-studio DOT com
1 year ago
In PHP 8.2 and later, PHP's internal case conversion functions are made locale-independent, which affects the following functions:    strtolower    strtoupper    lcfirst    ucfirst    ucwords    stristr    stripos    strripos    str_ireplaceAll of the functions above only perform case conversion and comparisons in the ASCII character range.
up
0
divinity76 at gmail dot com
3 years ago
if someone is looking for a getlocale(), <?phpif(!function_exists("getlocale")){    function getlocale(int $category)/*:string|false*/{        return setlocale($category, 0);    }}?>
up
0
leif at neland dot dk
14 years ago
Regarding dash'es in locale, it appears they should be omitted entirely.In /etc/locale.gen I haveda_DK.ISO-8859-15 ISO-8859-15but locale -a gives da_DK.iso885915which is the format setlocale()  wants.(Debian)
up
0
ostapk
17 years ago
There is a new PECL extension under development called intl (it will be available in PHP5.3). Meanwhile all who rely on the setlocale() and friends should be aware about the limitations of them as covered in this post on the onPHP5.com blog: http://www.onphp5.com/article/22
up
-1
flavioacvalverde at gmail dot com
14 years ago
For Portugal I had to use

<?php setlocale(LC_ALL, 'Portuguese_Portugal.1252'); ?>

using php with IIS on Windows server.
up
-2
mvanbaak
18 years ago
To complement Sven K's tip about debian:You can also install the package locales-allThat one holds all the locales there are in compiled form.
To Top