^ 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 |