IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Linux Professional Institute Certificate. LPIC-1

Lpic1 large.gif
Certificat LPIC-1
Examen: 102 (torneu a la resta de temes)
Fitxers: LPI107.3_LocalitzacioiInternacionalitzacio.pdf (LPI107.3_LocalitzacioiInternacionalitzacio.odp)
Objectius: http://www.lpi.org/eng/certification/the_lpic_program/lpic_1/exam_102_detailed_objectives
Dipòsit SVN: http://acacha.org/svn/lpi/Materials/Examen_102/107.3
Usuari: anonymous
Paraula de pas: qualsevol paraula de pas

Contingut

Objectius del tema

107.3. Localització i internacionalització
Objective.jpg
  • Objectiu: Els candidats han de ser capaços de regionalitzar un sistema en un idioma diferent a l'anglès. A més, cal saber perquè LANG=C és important quan es creen guions de bash.
  • Pes: 3
060317 Icon - Theory of Knowledge v01 pdc.jpg

Àrees Clau de Coneixement:

  • Configuració de locale
  • Configuració de la zona horària.
Icon list.jpg

La següent és una llista parcial de fitxers, termes i utilitats utilitzades:

Text-editor.svg

Apunts: LPI 107.3. Localització i internacionalització

Plantilla per prendre apunts

Localització i internacionalització

La internacionalització és el procés de dissenyar programari de forma que pugi adaptar-se fàcilment a diferents idiomes i regions del món sense necessitat de realitzar canvis en el codi. Com que és una paraula molt llarga s'utilitza l'abreviació i18n on 18 són el número de lletres que hi ha entre la i i la n a la paraula internacionalització.

En canvi la localització és el procés d'adaptar una aplicació (o tot un sistema operatiu) a una regió específica i a un idioma específic. Com que és una paraula molt llarga s'utilitza l'abreviació l10n on 10 són el número de lletres que hi ha entre l l i la n a la paraula localització. A la localització també de l'anomena regionalització.

NOTA: Podem dir que la localització és el procés que realitzen els usuaris per escollir en quin idioma i regió volen treballar i en canvi la internacionalització és el procés que segueixen els desenvolupadors per tal que precisament els usuaris puguin localitzar una aplicació de forma fàcil. Aquest objectiu de LPI es centra en la localització (no cal saber dissenyar aplicacions i18n)

Algunes empreses, como Microsoft o IBM, utilitzen el terme globalització (g11n) per referir-se a la combinació d'internacionalització i localització.

És molt important diferenciar una simple traducció d'una localització. La localització va molt més enllà que la simple traducció de l'aplicació, també té en compte aspectes com:

  • Cada regió pot tenir diversos idiomes disponibles (i fins i tot dialectes)
  • Diferents convencions culturals.
  • Diferents zones horàries
  • Diferents format de les dates i hores
  • Diferent format de moneda
  • Diferents sistemes de pes i mesures
  • Diferents codificacions de caràcters (vegeu unicode):
  • Diferents formats de números (el separador de decimals...)

A mode d'exemple, podeu veure la següent imatge que mostra un mapa de com es formaten les dates a tot el món:

     dd-mm-yyyy      dd-mm-yyyy and yyyy-mm-dd
     mm-dd-yyyy      mm-dd-yyyy and dd-mm-yyyy
     yyyy-mm-dd      mm-dd-yyyy, dd-mm-yyyy, and yyyy-mm-dd

Recursos:

Locales

El format d'un locale [1] és el següent:

language(_territory)(.encoding)(@modifier)

Per exemple podria ser:

$ locale
LANG=ca_ES.UTF-8@valencia

L'única part obligatòria és el codi d'idioma (ISO-639 de 2 lletres) (p.ex anglès). El mateix idioma es pot utilitzar de forma diferent en territoris diferents per aquesta raó es pot especificar el territori també (per exemple fr_FR és el francès a França en canvi fr_CA és el francès a Canada). També es pot especificar el codi de caràcters. Els codis de país són de l'estàndard de dos lletres ISO-3166-1.

El modifier es pot utilitzar per a indicar variants com l'Euro (p. ex. es_ES@euro) o dialectes.

Hi ha locales especials que no segueixen aquest format:

  • POSIX locale o C locale: Configura un entorn Unix tradicional amb codificació ASCII, temps, dates, números, monedes i tota la resta en americà. Sistema existent abans de tenir locales.

El POSIX locale és útil per a scripts o no volem que s'apliquin traduccions a les ordres que executem o per que ordres com sort o grep funcionin "correctament". Per exemple, imagineu-vos que volem mostrar les particions swap amb fdisk. L'ordre:

$ sudo fdisk -l | grep swap

No funcionarà si el nostre locale és :

LANG=ca_ES.UTF-8

En canvi:

$ LANG=POSIX; sudo fdisk -l | grep swap
/dev/sda5           29165       30401     9936171   82  Linux swap / Solaris

o

$ LANG=C; sudo fdisk -l | grep swap
/dev/sda5           29165       30401     9936171   82  Linux swap / Solaris

Funcionen correctament.

A més cal recordar que els locales no defineixen només l'idioma a utilitzar, per aquesta raó en sistemes GNU/Linux es defineixen múltiples variables d'entorn que permeten concretar tots els aspectes referents a la localització del sistema. Les variables són:

  • LC_MESSAGES: Determina quin és l'idioma i el codi de caràcters a utilitzar per als missatges i les etiquetes dels components GUI de les aplicacions (menús, missatges d'error, etiquetes de camps de formulari o altres widgets, etc...). La majoria d'aplicacions utilitzant gettext i gettext es basa en LC_MESSAGES. Altres aplicacions no utilitzen gettext i per tant pot ser que ignorin LC_MESSAGES.
  • LC_COLLATE: S'utilitza per indicar com s'ordenaran els strings segons l'alfabet local. Consulteu sort i per exemple la diferència que hi ha al ordenar majúscules en ASCII o en l'idioma local o inclús entre diferents idiomes. També és molt important en bases de dades a l'hora d'utilitzar clàusules SQL com ORDER BY. També afecta a rangs de caràcters en expressions com [A-Z].
  • LC_CTYPE: Defineix com es classifiquen els caràcters, és a dir coses com la relació que hi ha entre lletres majúscules i minúscules o quins caràcters es consideren alfanúmerics o numèrics. Afecta a aplicacions com grep que es poden executar ignorant o no ignorant majúscules i a qualsevol eina que utilitzi expressions regulars.
  • LC_MONETARY: El tipus de moneda que s'utilitza i detalls com el format dels decimals.
  • LC_NUMERIC: Per exemple indica si el caràcter decimal és el punt i el separador la coma com els americans o al revés com ho fan els alemanys.
  • LC_TIME: No tots els idiomes mostren les dates igual. Per exemple els anglesos posen primer el més i després el dia i la setmana pot començar en diumenge en comptes de en dilluns.
  • LC_PAPER: mides dels papers.
  • LC_NAME: format en que es mostren els noms de persona complerts.
  • LC_ADDRESS: format de les adreces postals
  • LC_TELEPHONE: format dels números de telèfon
  • LC_MEASUREMENT: unitats de mesura (Kg, pounds, etc...)

NOTA: Observeu que podeu per exemple definir que el vostre idioma és català, però en canvi utilitzar un sistema numèric anglès, ja que podeu definir les variables d'entorn de forma que siguin independents entre elles.

Els següent protocol estableix com es decideix quin és el locale a escollir (segons $ man 7 locale):

  1. Si s'estableix la variable d'entorn LC_ALL i té un valor no null, aleshores s'utilitza aquest locale
  2. Sinó hi ha LC_ALL i existeix un locale especific per a una acció de localització específica (p. ex. LC_NUMERIC) aleshores s'utilitza aquest valor
  3. Si no hi ha cap dels valors anteriors s'utilitza la variable LANG

Recursos: Codis de llengua:

Codis de país:

Codis de caràcters:

Exemple de configuració en català

Una Ubuntu 9.10 configurada correctament en català tindria la següent configuració de localització:

$ locale
LANG=ca_ES.UTF-8
LC_CTYPE="ca_ES.UTF-8"
LC_NUMERIC="ca_ES.UTF-8"
LC_TIME="ca_ES.UTF-8"
LC_COLLATE="ca_ES.UTF-8"
LC_MONETARY="ca_ES.UTF-8"
LC_MESSAGES="ca_ES.UTF-8"
LC_PAPER="ca_ES.UTF-8"
LC_NAME="ca_ES.UTF-8"
LC_ADDRESS="ca_ES.UTF-8"
LC_TELEPHONE="ca_ES.UTF-8"
LC_MEASUREMENT="ca_ES.UTF-8"
LC_IDENTIFICATION="ca_ES.UTF-8"
LC_ALL=

Locales en Unix

Els locals es guarden als fitxers de la carpeta:

/usr/share/i18n/locales

Per exemple el fitxer de locales del català és un fitxer ASCII:

$ file /usr/share/i18n/locales/ca_ES
ca_ES: ASCII text

A on s'indiquen tots els detalls de l'idioma (com s'ordena, quin és el caràcter monetari, etc...). El format del fitxes es descriu a:

$ man 5 locale

Ara bé, com ja sabeu els formats de text sempre són més lents que els formats binaris i es necessari generar uns fitxers binaris a partir dels fitxers de text que seran els que utilitzarà el sistema per consultar les dades de localització d'una forma més ràpida.

L'ordre localedef permet definir "compilar" els fitxers de text:

$ localedef -i zu_ZA -f ../charmaps/UTF-8 zu_ZA

Tot i que ara es més habitual utilitzar locale-gen.

En sistemes Debian però el més habitual és recompilar amb:

$ sudo dpkg-reconfigure locales
[sudo] password for sergi: 
Generating locales...
  ca_AD.UTF-8... done
  ca_ES.UTF-8... done
  ca_ES.UTF-8@valencia... done
  ca_FR.UTF-8... done
  ca_IT.UTF-8... done
  en_AG.UTF-8... up-to-date
  en_AU.UTF-8... up-to-date
  en_BW.UTF-8... up-to-date
  en_CA.UTF-8... up-to-date
  en_DK.UTF-8... up-to-date
  en_GB.UTF-8... up-to-date
  en_HK.UTF-8... up-to-date
  en_IE.UTF-8... up-to-date
  en_IN.UTF-8... up-to-date
  en_NG.UTF-8... up-to-date
  en_NZ.UTF-8... up-to-date
  en_PH.UTF-8... up-to-date
  en_SG.UTF-8... up-to-date
  en_US.UTF-8... up-to-date
  en_ZA.UTF-8... up-to-date
  en_ZW.UTF-8... up-to-date
Generation complete.

Configurar els locales

NOTA: Obsolet, només per a Dapper

Es poden configurar amb el paquet localeconf:

$ sudo aptitude install localeconf
$ sudo dpkg-reconfigure localeconf

Instal·lació de suport d'idioma

Des de la línia d'ordres es pot fer amb:

$ sudo apt-get install language-pack-ca language-support-ca

Que instal·la el suport bàsic per a un idioma concret.

O des de l'entorn gràfic a Gnome es fa a Sistema > Administració > Suport d'idioma

La majoria d'aplicacions multi llengua tenen un paquet apart per cada idioma que suporten. Per exemple OpenOffice suporta els següents idiomes:

$ sudo apt-get install openoffice.org2-l10n-  TABULEU DOS COPS!
openoffice.org2-l10n-af     openoffice.org2-l10n-el     openoffice.org2-l10n-hi-in  openoffice.org2-l10n-ml-in  openoffice.org2-l10n-ro     openoffice.org2-l10n-ti-er
openoffice.org2-l10n-ar     openoffice.org2-l10n-en-gb  openoffice.org2-l10n-hr     openoffice.org2-l10n-mn     openoffice.org2-l10n-ru     openoffice.org2-l10n-tn
openoffice.org2-l10n-as-in  openoffice.org2-l10n-en-za  openoffice.org2-l10n-hu     openoffice.org2-l10n-mr-in  openoffice.org2-l10n-rw     openoffice.org2-l10n-tr
openoffice.org2-l10n-be-by  openoffice.org2-l10n-eo     openoffice.org2-l10n-it     openoffice.org2-l10n-nb     openoffice.org2-l10n-sk     openoffice.org2-l10n-ts
openoffice.org2-l10n-bg     openoffice.org2-l10n-es     openoffice.org2-l10n-ja     openoffice.org2-l10n-ne     openoffice.org2-l10n-sl     openoffice.org2-l10n-uk
openoffice.org2-l10n-bn     openoffice.org2-l10n-et     openoffice.org2-l10n-ka     openoffice.org2-l10n-nl     openoffice.org2-l10n-sr     openoffice.org2-l10n-ur-in
openoffice.org2-l10n-br     openoffice.org2-l10n-eu     openoffice.org2-l10n-km     openoffice.org2-l10n-nn     openoffice.org2-l10n-ss     openoffice.org2-l10n-uz
openoffice.org2-l10n-bs     openoffice.org2-l10n-fa     openoffice.org2-l10n-kn     openoffice.org2-l10n-nr     openoffice.org2-l10n-st     openoffice.org2-l10n-ve
openoffice.org2-l10n-ca     openoffice.org2-l10n-fi     openoffice.org2-l10n-ko     openoffice.org2-l10n-ns     openoffice.org2-l10n-sv     openoffice.org2-l10n-vi
openoffice.org2-l10n-cs     openoffice.org2-l10n-fr     openoffice.org2-l10n-ku     openoffice.org2-l10n-or-in  openoffice.org2-l10n-sw     openoffice.org2-l10n-xh
openoffice.org2-l10n-cy     openoffice.org2-l10n-ga     openoffice.org2-l10n-lo     openoffice.org2-l10n-pa-in  openoffice.org2-l10n-ta-in  openoffice.org2-l10n-zh-cn
openoffice.org2-l10n-da     openoffice.org2-l10n-gl     openoffice.org2-l10n-lt     openoffice.org2-l10n-pl     openoffice.org2-l10n-te-in  openoffice.org2-l10n-zh-tw
openoffice.org2-l10n-de     openoffice.org2-l10n-gu-in  openoffice.org2-l10n-lv     openoffice.org2-l10n-pt     openoffice.org2-l10n-tg     openoffice.org2-l10n-zu
openoffice.org2-l10n-dz     openoffice.org2-l10n-he     openoffice.org2-l10n-mk     openoffice.org2-l10n-pt-br  openoffice.org2-l10n-th

Configuració del teclat

La configuració del teclat es fa de diferents formes segons la distribució. Consulteu:

http://www.howtoforge.com/changing-language-and-keyboard-layout-on-various-linux-distributions

Per a Ubuntu depèn de la versió. Vegeu:

Afegir un locale

Primer cal assegurar-se que el locale està a la llista de locales suportats:

$ sudo joe /var/lib/locales/supported.d/local

Per exemple:

en_GB ISO-8859-1

I tornar a generar els supported locales:

$ sudo dpkg-reconfigure locales

Establir el locale per defecte

Abans es posava al /etc/environment

$ cat /etc/environment
LANG="en_GB"

Ara es recomana posar-lo a /etc/default/locale. Per exemple en català a una Ubuntu 9.10:

$ cat /etc/default/locale 
LANG="ca_ES.UTF-8"

Codificacions de caràcters

ASCII

ASCII (de l'anglès American Standard Code for Information Interchange) és un Codi Estàndard Americà per a l'Intercanvi d'Informació.

L'ASCII és un joc de caràcters que assigna valors numèrics (del 0 al 127, 7 bits de longitud) a les lletres, xifres i signes de puntuació.

El codi ASCII utilitza 7 bits per representar els caràcters, encara que inicialment emprava un bit addicional (bit de paritat) que s'usava per detectar errors en la transmissió. Sovint es diu incorrectament ASCII a uns altres codis de caràcters de 8 bits, com l'estàndard ISO-8859-1 que és una extensió que utilitza 8 bits per proporcionar caràcters addicionals usats en idiomes diferents a l'anglès, com l'espanyol. Aquests codis de caràcters s'han anomenat codis de caràcters extensos o fins i tot ASCII-extens però no es van arribar a estandarditzar mai.

Els caràcters de la part superior (127 a 255), varien d'un estàndard a un altre, encara que el més utilitzat és el ISO Latin-1 o ISO-8859-1. Aquestes varacions sovint se'ls anomenada codis de pàgina (code pages) (sobretot Microsoft utilitzava aquest terme).

ASCII va ser publicat com a estàndard per primera vegada en 1967 i va ser actualitzat per última vegada en 1986. En l'actualitat defineix codis per 33 caràcters no imprimibles, dels quals la majoria són caràcters de control obsolets que tenen efecte sobre com es processa el text, més altres 95 caràcters imprimibles que els segueixen en la numeració (començant pel caràcter espai).

Gairebé tots els sistemes informàtics actuals utilitzen el codi ASCII o una extensió compatible per representar textos i per al control de dispositius que manegen text.

Hi ha dos tipus de caràcters:

  • Imprimibles: es poden mostrar en una impressora.
  • De control: serveixen per fer operacions com salt de línia, beep o escapar caràcters.

Si instal·leu:

$ sudo apt-get install ascii

Podreu consultar la taula ascii amb:

$ ascii

Vegeu ascii.

Consulteu també:

$ man ascii

Recursos:

ASCII art

Consulteu ASCII art

ISO-8859

ISO 8859-1 o ISO Latin 1 és una norma de la ISO que defineix la codificació de l'alfabet llatí incloent diacrítics (com lletres amb accents, la ñ o la ç) i lletres especials com ß i Ø. Dona suport a les següents llengües de l'Europa occidental:

afrikáans, alemán, aragonés, asturiano, catalán, danés, escocés, español, feroés, finés, francés, gaélico, gallego, inglés, islandés, italiano, neerlandés, noruego, 
portugués, sueco i Euskera.

Pertany al grup de jocs de caràcters de l'ISO coneguts com ISO/IEC 8859 que es caracteritzen per seu extended ASCII (els 128 primers caràcters són ASCII i la resta (128 caràcters) depenen de la codificació. Són sistemes de caràcters de 8 bits.

Els caràcters ISO-8859-1 són a més els primers 256 caràcters de l'estàndard ISO 10646 (Unicode).

La norma ISO 8859-15 consisteix en una revisió de la ISO 8859-1, incorporant el símbol de l'Euro i alguns caràcters necessaris per a donar suport complet al francès, finés i estonià.

Consulteu també:

$ man iso_8859_1

Recursos:

Unicode

Unicode és un estàndard internacional de codificació de caràcters en suports informàtics. El seu objectiu és proporcionar el mitjà per a permetre emmagatzemar qualsevol text que es desitgi. Això inclou qualsevol mena de forma d'escriptura que es faci servir actualment, moltes formes d'escriptura conegudes només pels estudiosos i altra mena de símbols com ara els símbols matemàtics, lingüístics i APL.

Unicode és un projecte que pretén reemplaçar tota mena de conjunt de caràcters existent. Avui en dia, Unicode es considera el conjunt de caràcters més complet i ha esdevingut l'opció a triar en la internacionalització de programari en entorns multilingües. Molts estàndars recents i programari bàsic han adoptat Unicode per a representar text.

El nom d'Unicode ve dels tres objectius perseguits: UNIversalitat, UNIformitat i UNICITAT.

L'estàndard és mantingut per l'Unicode Technical Committee (UTC), integrat al Unicode Consortium, del que formen art múltiples empreses i institucions relacionades amb la informàtica i treballen de forma conjunta amb la ISO/IEC per desenvolupar estandards compatibles.

Unicode va ser un projecte pensat per a substituir el desgavell de codis anteriors (des de l'ASCII als ISO-8859 i altres codis internacionals) els quals estaven molt limitats en suport multilingüe, és a dir, cada regió tenia un estàndard ISO-8859 (a Catalunya el ISO-8859-1) però no existia un codi que permetes tenir textos amb codificacions mixtes.

La majoria de sistemes operatius moderns, incloent Linux l'implementen així com altres tecnologies com Java o XML].

Unicode.png

Los punts de codi unicode tenen un identificador únic (número entre). Segons l'arquitectura un ordinador pot utilitzar 8, 16 o 32 bits per a representar aquests enters (l'arquitectura de representació de caràcters no té per que coincidir amb l'arquitectura de la CPU). Les formes de codificació de Unicode reglamenten la forma en que es transformaran les unitats tractades per l'ordinadors. Hi ha 2 possibles formes definides per unicode sota el nom Unicode Transformation Format UTF:

  • UTF-8: Codificació orientada a byte (8 bits) que té símbols de longitud variable.
  • UTF-16: Codificació de 16 bits de longitud variable optimitzada
  • UTF-32: codificació de 32 bits de longitud fixa. Entren tot els possibles caràcters i és la més senzilla d'utilitzar.

Les formes de codificació descriuen el mode en que l'ordinador representa el símbol i cal definir Esquemes de codificació que indiquen com es serialitza la informació codificada de forma segura, és a dir que sistemes heterogenis (per exemple un emissor en UTF-8 i un receptor amb UTF-8 o segons com s'ordenin els bytes endianess ) puguin intercanviar informació de forma correcta. Els esquemes són /:

  • UTF-8 No necessita. Només 1 byte no cal indicar quin és l'ordre
  • UTF-16 Big-endian o Little-endian
  • UTF-16BE Big-endian
  • UTF-16LE Little-endian
  • UTF-32 Big-endian o Little-endian
  • UTF-32BE Big-endian
  • UTF-32LE Little-endian

Als repositoris de sistemes Debian teniu disponible l'ordre unicode:

Caràcter compost:

$ unicode ç
U+00E7 LATIN SMALL LETTER C WITH CEDILLA
UTF-8: c3 a7  UTF-16BE: 00e7  Decimal: ç
ç (Ç)
Uppercase: U+00C7
Category: Ll (Letter, Lowercase)
Bidi: L (Left-to-Right)
Decomposition: 0063 0327
$ sudo apt-get install unicode
$ unicode ½
U+00BD VULGAR FRACTION ONE HALF
UTF-8: c2 bd  UTF-16BE: 00bd  Decimal: ½
½
Category: No (Number, Other)
Numeric value: 1/2
Bidi: ON (Other Neutrals)
Decomposition: <fraction> 0031 2044 0032

Consulteu també:

$ man utf8

UTF-8

UTF-8 (8-bit Unicode Transformation Format) és un format de codificació de caràcters unicode i ISO 10646 que utilitza símbols de longitud variable. Va ser creat per Robert C. Pike i Kenneth L. Thompson (aquest últim també va participar en la creació de C i de Unix)

És un tels tres possibles formats per representar Unicode. Característiques:

  • Pot representar qualsevol caràcter unicode.
  • La mida dels símbols pot estar entre 1 o 4 bytes (per cada caràcter unicode)
  • Inclou ASCII de 7 bits i per tant és compatible endarrere amb ASCII.
  • Inclou sincronia. És possible determinar el inicio de cada símbol sense reiniciar la lectura des del principi de la comunicació
  • No hi ha superposició. Els conjunts de valors que pot prendre cada byte d'un caràcter multibyte, son disjunts, i per tant és impossible confondre'ls entre si.

Aquestes característiques el fan ideal per a codificació de correus electrònics i pàgines web. El IETF recomana que tos els protocols d'Internet indiquin quina codificació utilitzen i que una de les contemplades sigui UTF-8.

Fixeu-vos en el cas de la lletra a minúscula:

$ ascii a
ASCII 6/1 is decimal 097, hex 61, octal 141, bits 01100001: prints as `a'
Official name: Miniscule a
Other names: Small a, Lowercase a 
$ unicode a
U+0061 LATIN SMALL LETTER A
UTF-8: 61  UTF-16BE: 0061  Decimal: a
a (A)
Uppercase: U+0041
Category: Ll (Letter, Lowercase)
Bidi: L (Left-to-Right)

Els símbols ASCII solen ser de mida un 1 byte.

en canvi la "à" amb accent no té codificació ASCII:

$ unicode à
U+00E0 LATIN SMALL LETTER A WITH GRAVE
UTF-8: c3 a0  UTF-16BE: 00e0  Decimal: à
à (À)
Uppercase: U+00C0
Category: Ll (Letter, Lowercase)
Bidi: L (Left-to-Right)
Decomposition: 0061 0300

Però observeu que la unicode és 224 en decimal, és a dir està entre els 256 primers caràcters i és compatible amb ISO-8859-1 i es representa com un símbol de 2 bytes (és un símbol complex)

Són el mateix número enter (97 en decimal, 61 en hexadecimal)

Podeu inserir qualsevol símbol unicode prement Ctrl+Shift+u i soltem, apareix un u subratllada, ara escriviu el codi hexadecimal del caràcter.

Si no sabeu el codi hexadecimal el podeu consultar amb l'ordre charmap:

$ charmap

O fixant-vos en el text en negreta de l'ordre unicode:

$ unicode à
U+00E0 LATIN SMALL LETTER A WITH GRAVE
...


El màxim en hexadecimal per tal de representar 8 bits és 2, però podeu fer:

Ctrl+Shift+U +  10380
U+10380 --> 𐎀

UTF-8 representa els code points utilitzant només 1 byte. El truc és utilitzar una codificació de longitud variable, entre 1 y 4 bytes (1 i 8 caràcters hexàdecimals) per tal de codificar els code points:

  • Si el code point té un valor entre U+0000 i U+007F s'utilitza 1 byte. Si el primer bit és cero, aleshores caràcter ocupa 1 byte.
  • Si el code point té un valor entr U+0080 i U+07FF s'utilitzen bytes. El "layout" binari serà 110xxxxx 10xxxxxx
  • Si el code point té un valor entr U+0800 i U+FFFF s'utilitzen 3 bytes. El layout binari serà: 1110xxxx 10xxxxxx 10xxxxxx
  • Si el code point té un valor entre U+10000 i U+10FFFF s'utilitzen 4 bytes.

Vegeu també Unicode. De qualsevol caràcter podeu obtenir informació a la wikipedia amb:

$ unicode -w U+10380

Configuració horària

Abans de continuar cal tenir clars els següents conceptes:

  • Temps Universal Coordinat (UTC): L'origen de les sigles és un compromís de la International Telecommunication Union (ITU) entre els sigles americanes "CUT" (coordinated universal time) i les sigles franceses "TUC" (temps universel coordonné) (vaja ni un ni l'altre!)
  • Greenwich Mean Time (GMT): El Greenwich Mean Time és una mesura del temps basada en el temps solar (mesura segons els estels) mitjà al meridià de Greenwich, meridià origen de les longituds, que travessa l'observatori de Greenwich, a prop de Londres, a Anglaterra. La mesura GMT ha servit de referència horària al món durant la major part del segle XX, abans de ser substituït pel "Temps Universal Coordinat" UTC l'any 1972. De vegades GMT es utilitzat encara com a sinònim del fus horari UTC+0. Les dues mesures, si bé semblants, no coincideixen pas, ja que el GMT es calcula sobre la rotació terrestre, i l'UTC sobre el TAI (Temps Atòmic Internacional), que basa el seu càlcul en la tècnica dels rellotges atòmics.
  • Temps atòmic Internacional (TAI): Creat al 1972, sistema més exacte de mesura del temps. Consulteu http://ca.wikipedia.org/wiki/Temps_at%C3%B2mic_internacional
  • Fus horari: Les zones horàries o fusos horaris són cadascuna de les vint-i-quatre àrees en les que es divideix la Terra que segueixen la mateixa definició de temps. Antigament, la gent feia servir el temps solar aparent, guiant-se per la posició del sol, amb aquest sistema l'hora variava amb la distància per exemple entre ciutats. Els fusos horaris van corregir en part aquest problema al posar els rellotges d'una regió al mateix temps solar mig. Els fusos horaris generalment estan centrats en meridians d'una longitud que és múltiple de 15 °, en tot cas tal i com es pot veure en el següent mapa les formes dels fusos horaris estan força afectades per les fronteres polítiques.
  • Hora local: Cada fus horari té un hora diferent respecte a l'hora UTC de referència (anomenada UTC+0, abans GMT tot i que no són exactament la mateix hora). A més cal tenir en compte les polítiques d'horari d'estiu (Daylight Saving Time o DST)
  • Horari d'estiu: Canvi d'hora que es realitza a l'estiu per aprofitar millor la llum diürna. No s'aplica igual a tot el mon. Consulteu el mapa de l'article de la Viquipèdia
  • Rellotge de maquinari (hardware clock): és el rellotge intern d'un PC que sol estar a la placa mare i que funciona de forma permanent gràcies a la pila que porta la placa mare. Aquest rellotge pot ser modificat per la BIOS, o pel sistema operatiu.

Normalment cada ordinador té dos rellotges, el de màquinari i un altre de programari que gestiona el sistema operatiu. El rellotge de maquinari normalment només s'utilitza per establir l'hora del rellotge del sistema operatiu durant l'arrencada del sistema i per guardar l'hora quan aturem o tornem a iniciar.

Bàsicament per tal de poder ajustar correctament l'hora, el que és necessita és tenir una base de dades amb tota la informació relacionada amb les zones horàries, DSTs i d'altres, i un cop es té aquesta base de dades, només cal executar un assistent que l'única pregunta que ens farà serà a quina zona horària pertanyem.

NOTA: Els canvis d'horari els durà a terme el propi sistema de forma automàtica

En sistemes GNU/Linux de la família Debian, el paquet que conté la base de dades i que permet escollir la zona horària és tzdata (Time Zone data). Normalment ja el tindreu instal·lar, però en alguns sistemes (potser un sistema muntat amb Debootstrap) haureu d'executar:

$ sudo apt-get install tzdata

Els fitxers proporcionats pel paquet són:

Binaris:

$ dpkg -L tzdata | grep bin
/usr/sbin
/usr/sbin/tzconfig
...

Fitxers de configuració:

No hi han proporcionats per la instal·lació:

$ dpkg -L tzdata | grep etc

Però un cop escollit el fus horari local (local time) es guarda al fitxer /etc/localtime en format binari:

$ file /etc/localtime 
/etc/localtime: timezone data, version 2, 8 gmt time flags, 8 std time flags, no leap seconds, 163 transition times, 8 abbreviation chars

També hi ha un enllaç simbòlic a:

$ file /usr/share/zoneinfo/localtime 

/usr/share/zoneinfo/localtime: symbolic link to `/etc/localtime'

Base de dades de fusos horaris:

La trobareu a la carpeta:

/usr/share/zoneinfo

Segons la documentació del paquet ( fitxer /usr/share/doc/tzdata/README.Debian) hi han dos formes d'utilitzar tzdata:

La majoria de sistemes utilitzen UTC, però el fet que s'utilitzi un sistema o l'altre depèn de si establim les variable d'entorn TZ i TZDIR:

TZDIR=/usr/share/zoneinfo/posix
TZ=Europe/Paris

Que seria un sistema UTC establer a la zona horaria de París.

Per defecte si no establim les variables d'entorn s'utilitza UTC i la configuració horària especificada a /etc/localtime (fitxer binari)

Recursos:

Com canviar la zona horària

De forma temporal per a un script o bash concreta

Consulteu tzselect i les variables d'entorn TZ i TZDIR.

De forma permanent per a tot el sistema

Cal reconfigurar el paquet tzdata:

$ sudo dpkg-reconfigure tzdata
Dpkgreconfiguretzdata.png
Dpkgreconfiguretzdata.png
Current default time zone: 'Europe/Madrid'
Local time is now:      Fri Apr 16 06:43:21 CEST 2010.
Universal Time is now:  Fri Apr 16 04:43:21 UTC 2010.

NOTA: En altres sistemes operatius o en sistemes legacy s'utilitza un enllaç simbòlic a la zona horària[2]

ln -sf ../usr/share/zoneinfo/your/zone /etc/localtime

tzconfig

Ja no s'utilitza, cal utilitzar dpkg-reconfigure:

$ sudo /usr/sbin/tzconfig
WARNING: the tzconfig command is deprecated, please use:
 dpkg-reconfigure tzdata

Configuració de l'hora

La data del sistema és pot establir de diverses maneres:

  • De forma manual:
  • Podem establir la data del sistema utilitzant l'ordre date. El primer problema que té aquest mètode és que gairebé impossible que establim correctament la data exacte. També podem utilitzar eines gràfiques, en tot cas, tots els sistemes manuals tenen el problema de l'exactitud del sistema.
  • Podem establir l'hora de forma manual però amb exactitud utilitzant l'ordre ntpdate que de fet és un client NTP
  • De forma automàtica
  • Podem utilitzar un servei d'hora proporcionat per un servidor d'hora per tal de sincronitzar la data del sistema utilitzant el protocol Network Time Protocol (NTP). A més podem configurar el sistema per què sincronitzi periòdicament l'hora (per exemple cada cop que s'inicii el sistema o automatitzant la tasca amb cron)
  • Es pot utilitzar DHCP per configurar l'hora dels clients DHCP. En aquest cas el que es fa és indicar als clients quins són els servidors de NTP a utilitzar.
  • També és possible configurar el Primary Domain Controller d'una xarxa Windows per tal de proporcionar l'hora a les màquines del domini (tant si s'utilitza Windows o Samba). En aquests casos el que es fa es configurar el guió LOGON.BAT per tal que cada cop que una màquina inicia una connexió al domini es sincronitzi l'hora del sistema.

NOTA: Entenem que quan parlem d'establir l'hora i data del sistema parlem d'establir la data i hora del sistema operatiu i no pas l'hora del rellotge de maquinari

IMPORTANT: En tot cas és clau per al correcte funcionament del procés que abans escollim correctament la nostra zona horària (fus horari). Cal tenir clar que odres com NTP el que fa és establir l'hora UTC i a partir d'aquí l'hora local s'estableix segons la configuració de la xona horària local

Paquets

libc

El suport per a localització esta inclòs a la llibreria estàndard de C que proporciona ordres com la pròpia ordre locale tal i com demostren les següents comandes:

$ which locale
/usr/bin/locale
$ dpkg -S /usr/bin/locale
libc6: /usr/bin/locale

NOTA: En versions més noves de Debian o derivats com p. ex. Ubuntu 9.10 el paquet és:

$ dpkg -S /usr/bin/locale
libc-bin: /usr/bin/locale

La configuració de locale forma part de la llibreria estàndard de C.

locales

Instal·la els fitxers necessaris per a locales:

$  dpkg -L locales | more

$ dpkg -l | grep locales
ii  locales                                    2.9+cvs20090214-7                    common files for locale support

Els locales es guarden a la carpeta:

/usr/share/i18n

L'única ordre que proporciona és:

/usr/sbin/locale-gen

tzdata

Tornant a configurar aquest paquet es torna a configurar la zona horària. Consulteu Com canviar la zona horària i Configuració horària.

Ordres

Configuració de la localització

/usr/bin/locale

Mostra la configuració de la localització:

$ locale
LANG=ca_ES.UTF-8
LC_CTYPE="ca_ES.UTF-8"
LC_NUMERIC="ca_ES.UTF-8"
LC_TIME="ca_ES.UTF-8"
LC_COLLATE="ca_ES.UTF-8"
LC_MONETARY="ca_ES.UTF-8"
LC_MESSAGES="ca_ES.UTF-8"
LC_PAPER="ca_ES.UTF-8"
LC_NAME="ca_ES.UTF-8"
LC_ADDRESS="ca_ES.UTF-8"
LC_TELEPHONE="ca_ES.UTF-8"
LC_MEASUREMENT="ca_ES.UTF-8"
LC_IDENTIFICATION="ca_ES.UTF-8"
LC_ALL=

És a dir mostra les variables d'entorn que configuren la localització del sistema que estem utilizant.

NOTA: De fet locate ens mostra la configuració de localització de la bash que estem executant. La configuració d'una bash concreta pot ser diferent de la del sistema o pot haver-hi diferències entre usuaris.

L'ordre es proporciona per libc:

$ which locale
libc-bin: /usr/bin/locale

Segons el manual:

$ man locale

Les variables d'entorn tenen el següent significat:

  • LC_CTYPE: Character classification and case conversion.
  • LC_COLLATE: Collation order.
  • LC_TIME: Date and time formats.
  • LC_NUMERIC: Non-monetary numeric formats.
  • LC_MONETARY: Monetary formats.
  • LC_MESSAGES: Formats of informative and diagnostic messages and interactive responses.
  • LC_PAPER: Paper size.
  • LC_NAME: Name formats.

També es pot utilitzar per consultar els locales disponibles al sistema:

$ locale -a
C
ca_AD.utf8
ca_ES.utf8
ca_ES.utf8@valencia
ca_FR.utf8
ca_IT.utf8
en_AG
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_NG
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZW.utf8
POSIX

O per mostrar tota la llista de codis de caràcters disponibles:

$ locale -m
$ cat /usr/share/i18n/SUPPORTED

localedef

Consulteu LPI_107.3._Localització_i_internacionalització#Locales_en_Unix

L'ordre es proporcionada per la llibreria estàndard de C

$ which localedef
/usr/bin/localedef
$ dpkg -S /usr/bin/localedef
libc6: /usr/bin/localedef

localepurge

$ sudo apt-get install localepurge

es pot tornar a executar en qualsevol moment amb:

$ dpkg-reconfigure localepurge

locale-gen

Permet afegir un locale

$ sudo locale-gen fr_FR.UTF-8
Generating locales...
  fr_FR.UTF-8... done
Generation complete.

Codificacions de caràcters

iconv

Consulteu iconv

recode

Consulteu recode

tofrodos

consulteu tofrodos

enca

Consulteu enca

file

Consulteu file

geany

Consulteu geany.

Configuració de l'hora

tzselect

Segons el manual:

$ man tzselect

Serveix per consultar zones horàries i el temps corresponent a altres zones horàries:

$ tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
 1) Africa
 2) Americas
3) Antarctica
 4) Arctic Ocean
 5) Asia
 6) Atlantic Ocean
 7) Australia
 8) Europe
 9) Indian Ocean
10) Pacific Ocean
11) none - I want to specify the time zone using the Posix TZ format.
#? 10
Please select a country.
 1) Chile		       15) Northern Mariana Islands
 2) Cook Islands	       16) Palau
 3) Ecuador		       17) Papua New Guinea
 4) Fiji		       18) Pitcairn
 5) French Polynesia	       19) Samoa (American)
 6) Guam		       20) Samoa (western)
 7) Kiribati		       21) Solomon Islands
 8) Marshall Islands	       22) Tokelau
 9) Micronesia		       23) Tonga
10) Nauru		       24) Tuvalu
11) New Caledonia	       25) United States
12) New Zealand		       26) US minor outlying islands
13) Niue		       27) Vanuatu
14) Norfolk Island	       28) Wallis & Futuna
#? 12
Please select one of the following time zone regions.
1) most locations
2) Chatham Islands
 #? 1

The following information has been given:

	New Zealand
	most locations

Therefore TZ='Pacific/Auckland' will be used.
Local time is now:	Sat Apr 17 18:25:02 NZST 2010.
Universal Time is now:	Sat Apr 17 06:25:02 UTC 2010.
Is the above information OK?
1) Yes
2) No
#? 1

You can make this change permanent for yourself by appending the line
	TZ='Pacific/Auckland'; export TZ
to the file '.profile' in your home directory; then log out and log in again.

Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Pacific/Auckland

Observeu que al final us indica com podeu configurar els fitxer de configuració de bash (p. ex ~/.profile) per fer els canvis permanents amb la variable d'entorn TZ.

Observeu que no es fa cap canvi al sistema, tal i com indica el manual:

Note that tzselect will not actually change the timezone for you. Use 'dpkg-reconfigure tzdata' to achieve this.

I podeu comprovar-ho amb:

$ date
ds abr 17 08:25:58 CEST 2010
$ echo $TZ

En canvi si executeu:

$ TZ='Pacific/Auckland'; export TZ
$ date
ds abr 17 18:28:14 NZST 2010

L'ordre forma part de les ordres binaries de la llibreria estàndard de C (libc):

$ dpkg -S tzselect
libc-bin: /usr/share/man/man1/tzselect.1.gz
manpages: /usr/share/man/man8/tzselect.8.gz
libc-bin: /usr/bin/tzselect

hwclock

Consulteu hwclock

tzconfig

date

Consulteu date

epoch

Consulteu epoch

  1. REDIRECT Pàgina on redireccionar

Fitxers de configuració

Configuració de la localització

/etc/locale.alias

Els locales poden tenir alias, que són noms alternatius o simplement noms curs dels locales complerts. Per exemple el català

$ cat /etc/locale.alias  | grep catalan
catalan		ca_ES.ISO-8859-1

/usr/share/i18n/locales

Consulteu LPI_107.3._Localització_i_internacionalització#Locales_en_Unix

/usr/share/i18n/charmaps

Consulteu LPI_107.3._Localització_i_internacionalització#Locales_en_Unix

/etc/environment

Es podria establir els locales de sistema a aquest fitxers igual que es fa amb la variable PATH. A una Ubuntu 9.10 no s'utilitza, el locale s'escull al entrar en una sessió gràfica

Consulteu /etc/environment.

Configuració de la zona horària

/etc/timezone

Per exemple, a una Ubuntu 9.10 per a Espanya, el contingut del fitxer és:

$ cat /etc/timezone 
Europe/Madrid

Aquest fitxer no l'instal·la directament cap paquet sinó que es genera durant la configuració de l'hora i no s'acostuma a modificar directament. Consulteu Configuració de l'hora.

/etc/localtime

Es tracta d'un fitxer en format binari on es guarda l'hora local:

$ file /etc/localtime 
/etc/localtime: timezone data, version 2, 8 gmt time flags, 8 std time flags, no leap seconds, 163 transition times, 8 abbreviation chars

Aquest fitxer no l'instal·la directament cap paquet sinó que es genera durant la configuració de l'hora. Vegeu Com canviar l'hora local

/usr/share/zoneinfo

En aquest fitxer trobeu la base de dades de zones horàries:

$ ls /usr/share/zoneinfo/
Africa      Atlantic   Chile    Eire     Factory  GMT-0      Iceland      Jamaica    MET      Navajo   Portugal    right      Turkey     WET
America     Australia  CST6CDT  EST      GB       GMT+0      Indian       Japan      Mexico   NZ       posix       ROC        UCT        W-SU
Antarctica  Brazil     Cuba     EST5EDT  GB-Eire  Greenwich  Iran         Kwajalein  Mideast  NZ-CHAT  posixrules  ROK        Universal  zone.tab
Arctic      Canada     EET      Etc      GMT      Hongkong   iso3166.tab  Libya      MST      Pacific  PRC         Singapore  US         Zulu
Asia        CET        Egypt    Europe   GMT0     HST        Israel       localtime  MST7MDT  Poland   PST8PDT     SystemV    UTC

Consulteu Configuració horària

/etc/default/rcS

Entre d'altres coses, estableix si l'hora del sistema és UTC o no. Consulteu LPI_107.3._Localització_i_internacionalització#Conflictes_de_temps_amb_sistemes_duals_Windows.2FLinux

/usr/share/doc/tzdata/README.Debian

Documentació del paquet Debian tzdata. Consulteu Configuració horària

$ cat /usr/share/doc/tzdata/README.Debian

README for tzdata
----------------- 

This package contains data required for the implementation of
standard local time for many representative locations around the
globe.

Two different versions are provided:
- The "posix" version is based on the Coordinated Universal Time (UTC).
- The "right" version is based on the International Atomic Time (TAI),
  and it includes the leap seconds.

Most systems have their hardware clock set either to UTC, or to a 
timezone with a fixed difference with UTC. Therefore the default 
version provided by this package is the "posix" one.

The TZDIR environment variable, when used together with the TZ one, 
forces the system to use one of the two versions. Examples:  

- TZDIR=/usr/share/zoneinfo/posix TZ=Europe/Paris on a system with 
  hardware clock set to UTC.
- TZDIR=/usr/share/zoneinfo/right TZ=Europe/Paris on a system with 
  hardware clock set to TAI. 

-- Aurelien Jarno <aurel32@debian.org>  Sat, 06 Sep 2008 12:27:09 +0200

Variables d'entorn

Vegeu també Variables d'entorn

LANG

LC_*

LC_ALL

TZ

Permet definir una zona de temps diferent per a una bash concreta.

$ TZ='Pacific/Auckland'; export TZ
$ date
ds abr 17 18:28:14 NZST 2010
$ man tzselect

NOTA: Si no s'indica res s'utilitzen els valors per defecte del sistema, segons /etc/localtime

Vegeu també tzselect.

Resol·lució de problemes. Troubleshooting

Conflictes de temps amb sistemes duals Windows/Linux

Els sistemes operatius emmagatzemen i obtenen l'hora del rellotge de maquinari (hardware clock) que normalment es troba a la placa mare de forma que fins i tot es pot mantenir l'hora quan el sistema no té energia elèctrica (el rellotge utilitza la pila de la placa mare).

La majoria de sistemes operatius (Linux/Unix/Mac) emmagatzemen el temps al rellotge de maquinari en UTC per defecte, en canvi altres sistemes operatius com Windows emmagatzema l'hora com a hora local (local time). Això causa problemes en sistemes duals.

L'avantatge d'utilitzar UTC és que aleshores no és necessari canviar l'hora del rellotge quan un es mou entre diferents zones horàries, o durant els canvis d'hora ( Daylight Savings Time o DST). L'hora universal és sempre la mateixa per totes les zones amb independència de l'època de l'any.

Per solucionar el problema hi ha dos opcions:

  • Fer que Windows utilitzi UTC
  • Fer que Linux utilitzi l'hora local

Fer que Linux utilitzi l'hora local és més estable i fiable que fer que Windows utilitzi UTC, per aquesta raó en sistemes duals (ho pregunta durant la instal.lació), Ubuntu des de la versió 8.10 utilitza per defecte l'hora local (posant UTC=no al fitxer /etc/default/rcS)

NOTA: En sistemes que no siguin de la família Debian, es possible que la modificació l'hàgiu de fer a /etc/sysconfig/clock

De totes maneres com a referència si voleu que Windows utilitzi UTC (tingueu en compte que no funciona per a Vista i versions posteriors) cal canviar el registre:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
    "RealTimeIsUniversal"=dword:00000001
http://acacha.org/mediawiki/index.php/Idiomes._Internacionalitzaci%C3%B3.Locales

Resolució de problemes. Troubleshooting

Com reconfigurar els locales?

$ sudo dpkg-reconfigure locales

perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), ...

Si sovint teniu errors similars a:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset), 
	LC_ALL = (unset) ,
	LANG = "ca_ES.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

La solució és:

$ sudo -i
$ export LC_CTYPE=C
$ export LC_MESSAGES=C
$ export LC_ALL=C
$ dpkg-reconfigure locales

També sovint el problema està relacionat amb no tenir els idiomes instal·lats. Per exemple per a català:

$ sudo apt-get install language-pack-ca language-support-ca
$ sudo apt-get install console-data


Programació

Gettext

Consulteu gettext.

C gettext

El manual de la secció 7 (convencions) us mostra informació sobre quines funcions de la llibreria estàndard de C utilitzen els locales:

$ man 7 locale

LOCALE(7)                                                                 Linux Programmer's Manual                                                                LOCALE(7) 

NAME
       locale - Description of multi-language support 

SYNOPSIS
       #include <locale.h> 

DESCRIPTION
       A  locale  is  a set of language and cultural rules.  These cover aspects such as language for messages, different character sets, lexicographic conventions, etc.  A
       program needs to be able to determine its locale and act accordingly to be portable to different cultures.

       The header <locale.h> declares data types, functions and macros which are useful in this task.  

       The functions it declares are setlocale(3) to set the current locale, and localeconv(3) to get information about number formatting.

       There are different categories for local information a program might need; they are declared as macros.  Using them as the first argument to the  setlocale(3)  func‐
       tion, it is possible to set one of these to the desired locale:

       LC_COLLATE
              This  is  used  to  change the behavior of the functions strcoll(3) and strxfrm(3), which are used to compare strings in the local alphabet.  For example, the
              German sharp s is sorted as "ss".

       LC_CTYPE
              This changes the behavior of the character handling and classification functions, such as isupper(3) and toupper(3), and the  multi-byte  character  functions
              such as mblen(3) or wctomb(3).

       LC_MONETARY
              changes  the  information  returned  by  localeconv(3)  which describes the way numbers are usually printed, with details such as decimal point versus decimal
              comma.  This information is internally used by the function strfmon(3).  

       LC_MESSAGES
              changes the language messages are displayed in and what an affirmative or negative answer looks like.  The GNU C-library contains the gettext(3), ngettext(3),
              and  rpmatch(3) functions to ease the use of these information.  The GNU gettext family of functions also obey the environment variable LANGUAGE (containing a
              colon-separated list of locales) if the category is set to a valid locale other than "C".

       LC_NUMERIC
              changes the information used by the printf(3) and scanf(3) family of functions, when they are advised to use the locale-settings.  This information  can  also
              be read with the localeconv(3) function. 

       LC_TIME
              changes  the  behavior  of the strftime(3) function to display the current time in a locally acceptable form; for example, most of Europe uses a 24-hour clock
              versus the 12-hour clock used in the United States. 

       LC_ALL All of the above.

      If the second argument to setlocale(3) is empty string, "", for the default locale, it is determined using the following steps:

      1.     If there is a non-null environment variable LC_ALL, the value of LC_ALL is used.

      2.     If an environment variable with the same name as one of the categories above exists and is non-null, its value is used for that category.

      3.     If there is a non-null environment variable LANG, the value of LANG is used.

PHP gettext

Vegeu també

Enllaços externs