^ Linux - Friheden til at programmere i Java: Version 0.7.20040516 - 2020-12-31 ^|
| [[java:java-i18n|forrige]] | Kapitel 24. Internationale programmer | [[java:java-i18n-ressourcebundt|næste]] |
----
==== 24.2. Lokalindstillinger ====
I JDK anvendes objekter af typen ''java.util.Locale'' til at angive brugerens sprog og geografiske region. Vi vil kalde et konkret ''Locale'' -objekt for en //lokalindstilling// . Klasser, der varierer deres adfærd på baggrund af en lokalindstilling, vil vi kalde for //lokalafhængige// .
Lokalindstillinger udfører intet i sig selv, men overgives til andre lokalafhængige objekter, som udfører det egentlige arbejde, f.eks. at formatere en beløbsstørrelse.
=== 24.2.1. Oprettelse af en lokalindstilling ===
En lokalindstilling kan konstrueres ved at angive sprog- og landekode, f.eks.
Locale xLocale = new Locale("da", "DK");
En lokalindstilling kan oprettes med et tredje, brugerdefineret argument. Dette kan f.eks. signalere platform.
Locale xLocale = new Locale("da", "DK", "UNIX");
Locale yLocale = new Locale("da", "DK", "WINDOWS");
Det brugerdefineret argument har ingen speciel betydning i JDK. Programmøren står selv for at bestemme betydningen af indholdet.
Det er også muligt at undlade landekoden ved at lade den være tom, men sprogkoden er obligatorisk.
Locale xLocale = new Locale("da", "");
Som oftes er vi blot interesseret i at benytte en global lokalindstilling, hvilket opnås ved at invokere en klassemetode på ''Locale'' :
Locale currentLocale = Locale.getDefault();
Dette objekt angiver den virtuelle maskines nuværende sprog- og regionsindstillinger. Ved opstart af den virtuelle maskine svarer denne lokalindstiling til brugerens indstillinger i operativsystemet.
Det er muligt at ændre den globale lokalindstilling ved at kalde klassemetoden ''Locale.setDefault(Locale aLocale)'' men vær opmærksom på at //alle// programmer i den virtuelle maskine vil blive berørt, da de lokalafhængige klasser anvender den globale lokalindstilling i de situationer, hvor man ikke explicit fortæller hvilken lokalindstilling, der skal anvendes.
=== 24.2.2. Tilgængelige lokalindstillinger ===
Man kan undersøge hvilke lokalindstillinger der er tilgængelige ved at læse afsnittet om understøttede lokalindstillinger i JDK-dokumentationen.
* [http://java.sun.com/j2se/1.3/docs/guide/intl/locale.doc.html|http://java.sun.com/j2se/1.3/docs/guide/intl/locale.doc.html]
Det er også muligt at afgøre med ''Locale.getAvailableLocales()'' .
import java.util.Locale;
public class AvailableLocales
{
public static void main(String[] args)
{
Locale[] l = Locale.getAvailableLocales();
for (int i=0; i
Kørsel af ovenstående program giver en masse lokalindstillinger
en en_US ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM
ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE be be_BY bg bg_BG ca ca_ES ca_ES_EURO cs
cs_CZ da da_DK de de_AT de_AT_EURO de_CH de_DE de_DE_EURO de_LU de_LU_EURO el
el_GR en_AU en_CA en_GB en_IE en_IE_EURO en_NZ en_ZA es es_BO es_AR es_CL es_CO
es_CR es_DO es_EC es_ES es_ES_EURO es_GT es_HN es_MX es_NI et es_PA es_PE es_PR
es_PY es_SV es_UY es_VE et_EE fi fi_FI fi_FI_EURO fr fr_BE fr_BE_EURO fr_CA
fr_CH fr_FR fr_FR_EURO fr_LU fr_LU_EURO hr hr_HR hu hu_HU is is_IS it it_CH
it_IT it_IT_EURO iw iw_IL ja ja_JP ko ko_KR lt lt_LT lv lv_LV mk mk_MK nl nl_BE
nl_BE_EURO nl_NL nl_NL_EURO no no_NO no_NO_NY pl pl_PL pt pt_BR pt_PT pt_PT_EURO
ro ro_RO ru ru_RU sh sh_YU sk sk_SK sl sl_SI sq sq_AL sr sr_YU sv sv_SE th th_TH
tr tr_TR uk uk_UA zh zh_CN zh_HK zh_TW
Som nævnt i sidste afsnit består en lokalindstilling af sprogkode, landekode og valgfrit argument. Ud fra ovenstående ser vi at der f.eks. er lokalindstillinger for
* fr_BE: Fransk i Belgien
* fr_BE_EURO: Fransk i Belgien med euro-valuta
* fr_CA: Fransk i Canada
* fr_FR: Fransk i Frankrig
* fr_LU: Fransk i Louxembourg
Sprog- og landekoderne er ISO-standarder, som kan findes på nettet.
* Sprog, ISO-639[http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt|http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt]
* Landekoder, ISO-3166[http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html|http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html]
Lad os nu se på hvordan lokalindstillinger kan anvendes.
----
| [[java:java-i18n|forrige]] | [[java:index|hjem]] | [[java:java-i18n-ressourcebundt|næste]] |
| Internationale programmer | [[java:java-i18n|op]] | Ressourcebundter |