X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperllocale.pod;h=08b50e0d128d9624abfde117454a203913ddedee;hb=c8984b0bd19897e6e30588055ac0338326f20a34;hp=0a85c0eb11d3b68cf10543e880e515e10c39993c;hpb=8ada0baa1f731edbe470a7630cfeb30c131b4672;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perllocale.pod b/pod/perllocale.pod index 0a85c0e..08b50e0 100644 --- a/pod/perllocale.pod +++ b/pod/perllocale.pod @@ -215,6 +215,8 @@ I section). If that fails, try the following command lines: ls /usr/lib/nls + ls /usr/share/locale + and see whether they list something resembling these en_US.ISO8859-1 de_DE.ISO8859-1 ru_RU.ISO8859-5 @@ -225,18 +227,18 @@ and see whether they list something resembling these english.iso88591 german.iso88591 russian.iso88595 english.roman8 russian.koi8r -Sadly, even though the calling interface for setlocale() has -been standardized, names of locales and the directories where the +Sadly, even though the calling interface for setlocale() has been +standardized, names of locales and the directories where the configuration resides have not been. The basic form of the name is -IB<.>I, but the latter parts after -I are not always present. The I and I are -usually from the standards B and B, the two-letter -abbreviations for the countries and the languages of the world, -respectively. The I part often mentions some B -character set, the Latin codesets. For example, C is the -so-called "Western codeset" that can be used to encode most Western -European languages. Again, there are several ways to write even the -name of that one standard. Lamentably. +IB<.>I, but the latter parts after +I are not always present. The I and I +are usually from the standards B and B, the +two-letter abbreviations for the countries and the languages of the +world, respectively. The I part often mentions some B character set, the Latin codesets. For example, C +is the so-called "Western European codeset" that can be used to encode +most Western European languages adequately. Again, there are several +ways to write even the name of that one standard. Lamentably. Two special locales are worth particular mention: "C" and "POSIX". Currently these are effectively the same locale: the difference is @@ -276,10 +278,10 @@ The two quickest fixes are either to render Perl silent about any locale inconsistencies or to run Perl under the default locale "C". Perl's moaning about locale problems can be silenced by setting the -environment variable PERL_BADLANG to a non-zero value, for example -"1". This method really just sweeps the problem under the carpet: you -tell Perl to shut up even when Perl sees that something is wrong. Do -not be surprised if later something locale-dependent misbehaves. +environment variable PERL_BADLANG to a zero value, for example "0". +This method really just sweeps the problem under the carpet: you tell +Perl to shut up even when Perl sees that something is wrong. Do not +be surprised if later something locale-dependent misbehaves. Perl can be run under the "C" locale by setting the environment variable LC_ALL to "C". This method is perhaps a bit more civilized @@ -330,7 +332,7 @@ Second, if using the listed commands you see something B (prefix matches do not count and case usually counts) like "En_US" without the quotes, then you should be okay because you are using a locale name that should be installed and available in your system. -In this case, see L. +In this case, see L. =head2 Permanently fixing your locale configuration @@ -349,7 +351,7 @@ rules for matching locale names are a bit vague because standardization is weak in this area. See again the L about general rules. -=head2 Permanently fixing system locale configuration +=head2 Fixing system locale configuration Contact a system administrator (preferably your own) and report the exact error message you get, and ask them to read this same documentation you @@ -785,9 +787,10 @@ of a match involving C<\w> while C is in effect. A string that can suppress Perl's warning about failed locale settings at startup. Failure can occur if the locale support in the operating system is lacking (broken) in some way--or if you mistyped the name of -a locale when you set up your environment. If this environment variable -is absent, or has a value that does not evaluate to integer zero--that -is, "0" or ""--Perl will complain about locale setting failures. +a locale when you set up your environment. If this environment +variable is absent, or has a value that does not evaluate to integer +zero--that is, "0" or ""-- Perl will complain about locale setting +failures. B: PERL_BADLANG only gives you a way to hide the warning message. The message tells about some problem in your system's locale support, @@ -806,6 +809,20 @@ for controlling an application's opinion on data. C is the "override-all" locale environment variable. If set, it overrides all the rest of the locale environment variables. +=item LANGUAGE + +B: C is a GNU extension, it affects you only if you +are using the GNU libc. This is the case if you are using e.g. Linux. +If you are using "commercial" UNIXes you are most probably I +using GNU libc and you can ignore C. + +However, in the case you are using C: it affects the +language of informational, warning, and error messages output by +commands (in other words, it's like C) but it has higher +priority than L. Moreover, it's not a single value but +instead a "path" (":"-separated list) of I (not locales). +See the GNU C library documentation for more information. + =item LC_CTYPE In the absence of C, C chooses the character type @@ -854,7 +871,7 @@ always in force, even if the program environment suggested otherwise (see L). By default, Perl still behaves this way for backward compatibility. If you want a Perl application to pay attention to locale information, you B use the S> -pragma (see L) to instruct it to do so. +pragma (see L) to instruct it to do so. Versions of Perl from 5.002 to 5.003 did use the C information if available; that is, C<\w> did understand what