På UNIX / Linux-system kallas denna installation POSIX [7] -lokaler och standardiseras som IEEE Std 1003.1-2017 [3]. En sådan lokal kan variera för systemet som helhet, och de enskilda användarkontona eftersom varje användare kan individualisera sin arbetsmiljö. I den här artikeln kommer vi att förklara för dig hur du kan räkna ut den aktuella lokalinställningen på Debian GNU / Linux, förstå dess enskilda justeringsskruvar och hur du anpassar systemet till dina behov.
Observera att den här artikeln är skräddarsydd för Debian GNU / Linux Release 10 “Buster”. Om inte annat anges fungerar de tekniker som beskrivs här också för dess derivat som Ubuntu eller Linux Mint [8].
Vad är en lokal?
Generellt sett är ett språk en uppsättning värden som återspeglar naturen och konventionerna i ett land eller en kultur. Bland annat lagras dessa värden som miljövariabler som representerar språket, teckenkodningen, formatering av datum och tid, standardpappersstorlek, landets valuta samt första veckodagen.
Som berörts tidigare finns det en allmän inställning som kallas 'standardinställning' och en användardefinierad inställning. Standardinställningen fungerar hela systemet och lagras i filen / etc / default / locale. Listning 1 visar standardläget på en Debian GNU / Linux med tyska som huvudspråk och 8 bitars unicode (UTF-8) som teckenuppsättning [11].
Listning 1: Standardinställningen för en tysk Debian GNU / Linux
$ cat / etc / default / locale # Fil genererad av update-locale LANG = “de_DE.UTF-8 ”$ --Observera att, i motsats till Debian GNU / Linux, lagras den systemomfattande lokalinställningen i vissa tidigare Ubuntu-versioner på / etc / locale.konf.
De användardefinierade inställningarna lagras som en dold fil i din hemkatalog, och de faktiska filer som utvärderas beror på inloggningsskalet som du använder [6]. Det traditionella Bourne-skalet (/ bin / sh) [4] läser de två filerna / etc / profilen och ~ /.medan Bourne-Again-skalet (Bash) (/ bin / bash) [5] läser / etc / profile och ~ /.bash_profile. Om ditt inloggningsskal är Z-skal (/ bin / zsh) [9], kommer de två filerna ~ /.zprofile och ~ /.zlogin läses, men inte ~ /.profil såvida det inte anropas i Bourne-skalemuleringsläge [10].
Att starta ett skal i en terminal i en befintlig session resulterar i ett interaktivt skal utan inloggning. Detta kan resultera i läsning av följande filer - ~ /.bashrc för Bash och / etc / zshrc samt ~ /.zshrc för Z-skal [6].
Namnger en lokal
Som förklaras här [12] följer namnet på en lokal ett specifikt mönster. Mönstret består av språkkoder, teckenkodning och beskrivningen av en vald variant.
Ett namn börjar med en ISO 639-1 gemenskod med två bokstäver [13] eller en ISO 639-2 trebokstavsspråk [14] om språket inte har två bokstäver. Till exempel är det de för tyska, fr för franska och cel för keltiska. Koden följs för många men inte alla språk av en understrykning _ och av en ISO 3166 stor bokstav med två bokstäver [15]. Till exempel leder detta till de_CH för schweizertysk och fr_CA för ett fransktalande system för en kanadensisk användare som sannolikt kommer att finnas i Québec.
Eventuellt en prick . följer namnet på teckenkodningen som UTF-8 eller ISO-8859-1 och @ -tecknet följt av namnet på en variant. Till exempel beskriver namnet [e-postskyddad] inställningen för ett engelska system för Irland med UTF-8-teckenkodning och euron som valutasymbol.
Kommandon och verktyg
Antalet kommandon relaterade till språk är relativt lågt. Listan innehåller språk som endast visar de aktuella språkinställningarna. Den andra är localectl som kan användas för att fråga och ändra systeminställningarna och tangentbordslayoutinställningarna. För att aktivera en lokal kommer verktygen dpkg-reconfigure och locale-gen till spel - se exemplet nedan.
Visa det språk som används
Steg ett är att räkna ut den aktuella platsen på ditt system med hjälp av kommandot locale enligt följande:
Listning 2: Visa den aktuella platsen
$ locale LANG = de_DE.UTF-8 SPRÅK = LC_CTYPE = “de_DE.UTF-8 ”LC_NUMERIC =“ de_DE.UTF-8 ”LC_TIME = “de_DE.UTF-8 ”LC_COLLATE =“ de_DE.UTF-8 ”LC_MONETARY =“ de_DE.UTF-8 ”
LC_MESSAGES = “de_DE.UTF-8 ”LC_PAPER =“ de_DE.UTF-8 ”LC_NAME =“ de_DE.UTF-8 ”
LC_ADDRESS = “de_DE.UTF-8 ”LC_TELEPHONE =“ de_DE.UTF-8 ”LC_MEASUREMENT =“ de_DE.UTF-8 ”
LC_IDENTIFICATION = “de_DE.UTF-8 ”LC_ALL = $ --
Observera att andra Linux-distributioner än Debian GNU / Linux kan använda ytterligare miljövariabler som inte anges ovan. De enskilda variablerna har följande betydelse:
- LANG: Bestämmer standardinställningen i avsaknad av andra språkrelaterade miljövariabler
- SPRÅK: Lista över översättningsspråk för reservmeddelanden
- LC_CTYPE: Teckenklassificering och fallkonvertering
- LC_NUMERIC: Numerisk formatering
- LC_TIME: Datum- och tidsformat
- LC_COLLATE: Sorteringsordning (sortering)
- LC_MONETARY: Monetär formatering
- LC_MESSAGES: Format på interaktiva ord och svar
- LC_PAPER: Standardpappersstorlek för region
- LC_NAME: Namnformat
- LC_ADDRESS: Konvention som används för formatering av gatu- eller postadresser
- LC_TELEPHONE: Konventioner som används för representation av telefonnummer
- LC_MEASUREMENT: Standardmätningssystem som används i regionen
- LC_IDENTIFICATION: Metadata om lokal information
- LC_RESPONSE: Bestämmer hur svar (som ja och nej) visas på det lokala språket (används inte av Debian GNU / Linux men Ubuntu)
- LC_ALL: Åsidosätter alla andra språkvariabler (utom SPRÅK)
Lista tillgängliga språk
Därefter kan du lista tillgängliga språk på ditt system med kommandot locale åtföljd av dess alternativ -a. -a är en förkortning för alla språk:
Listning 3: Visa tillgängliga språk
$ lokal -a C C.UTF-8 de_DE @ euro de_DE.utf8 sv_US.utf8 POSIX $ --Listning 3 innehåller två språkinställningar för både tyska (Tyskland) och engelska (USA). De tre posterna C, C.UTF-8 och POSIX är synonyma och representerar standardinställningarna som är lämpliga för data som analyseras av ett datorprogram. Utdata i Listing 3 är baserad på listan över stödda platser som lagras i / usr / share / i18n / SUPPORTED.
Att lägga till alternativet -v (kort för -verbose) till samtalet leder till en mycket mer omfattande utdata som inkluderar LC_IDENTIFICATION-metadata om varje land. Figur 1 visar detta för samtalet från Listing 3.
För att se vilka platser som redan finns och vilka som behöver ytterligare hjälp för att kunna slutföras kan du också ta en titt på kartan över Local Helper Project [20]. Röda markörer visar tydligt vilka platser som är oavslutade. Figur 2 visar platser för Sydafrika som ser ganska kompletta ut.
Visa tillgängliga karaktärskartor
Lokalkommandot kommer med alternativet -m som är en förkortning för -charmaps. Utdata visar tillgängliga karaktärskartor eller beskrivningsfiler för teckenuppsättning [16]. En sådan fil är tänkt att "definiera egenskaper för den kodade teckenuppsättningen och kodningen för de tecken som anges i Portable Character Set, och kan definiera kodning för ytterligare tecken som stöds av implementeringen" [16]. Listning 4 illustrerar detta med ett utdrag av hela listan.
Lista 4: Beskrivningsfiler för teckenuppsättningar
$ locale -m ANSI_X3.110-1983 ANSI_X3.4-1968 ARMSCII-8 ASMO_449 BIG5 BIG5-HKSCS ... $ --Visa definitionerna av språkvariabler
Varje variabel som används för en lokal har sin egen definition. Med hjälp av alternativet -k (kort för-nyckelord-namn) visar locale-kommandot denna inställning i detalj. Listning 5 illustrerar detta för variabeln LC_TELEPHONE som den definieras i en tysk miljö - telefonnummerformatet, det inhemska telefonformatet, den internationella urvalskoden samt landskoden (internationellt prefix) och koduppsättningen. Se Locale Helper Project [20] för en detaljerad beskrivning av värdena.
Listning 5: Detaljerna för LC_TELEPHONE
$ locale -k LC_TELEPHONE tel_int_fmt = “+% c% a% l” tel_dom_fmt = “% A% l”int_select = “00” int_prefix = “49” telefon-codeset = “UTF-8” $ --
Ändrar den aktuella platsen
Kunskapen om platsen blir nödvändig så snart du kör ett system som kommer med en annan plats än du är van vid - till exempel på ett Linux live-system. Ändring av språk kan göras på två sätt - konfigurera om Debian locales-paketet [19] och lägga till den önskade platsen med kommandot locale-gen. För alternativ ett öppnas en textbaserad konfigurationsdialog som visas i figur 3 genom att köra följande kommando:
# dpkg-omkonfigurera språk
Tryck på mellanslagstangenten för att välja önskad plats i listan som visas i dialogrutan och välj “OK” för att bekräfta ditt val. Nästa dialogfönster ger dig en lista över språk som är tillgängliga för standardinställningen. Välj önskad och välj “OK”. Nu genereras motsvarande språkfiler och den tidigare valda platsen är inställd för ditt system.
För alternativ två görs önskad lokalisering med hjälp av kommandot loc-gen. Listning 6 illustrerar detta för en fransk installation:
Listning 6: Skapa en fransk språk
locale-gen fr_FR.UTF-8Skapar språk ... fr_FR.UTF-8 ... klar Generation klar. # --
För att använda den tidigare genererade platsen som standard, kör du kommandot i Listing 7 för att ställa in det korrekt:
Lista 7: Ställa in språk manuellt
# update-locale LANG = fr_FR.UTF-8Så snart du öppnar en ny terminalsession eller loggar in igen på ditt system aktiveras ändringarna.
Kompilera en lokal definitionsfil
Kommandot localectl hjälper dig att manuellt kompilera en lokal definitionsfil. För att skapa en fransk inställning kör du kommandot enligt följande:
Listning 8: Kompilera en språkdefinition
# localedef -i fr_FR -f UTF-8 fr_FR.UTF-8Slutsats
Att förstå språk kan ta ett tag eftersom det är en installation som påverkas av flera faktorer. Vi förklarade hur du kan räkna ut din nuvarande plats och hur du ändrar den korrekt. Att anpassa Linux-systemet efter dina behov borde vara mycket enklare från och med nu.
Länkar och referenser
- [1] Lokal, Debian Wiki
- [2] ChangeLanguage, Hur man ändrar språk för ditt Debian-system
- [3] POSIX Locale, The Open Group Base Specifications Issue 7, 2018 edition
- [4] Bourne-skal, Wikipedia
- [5] Bourne-Again-skal, Wikipedia
- [6] Skillnad mellan inloggningsskal och icke inloggningsskal?, StackExchange
- [7] Portabelt operativsystemgränssnitt (POSIX), Wikipedia
- [8] Linux Mint
- [9] Z-skal, Wikipedia
- [10] Zsh Shell inbyggda kommandon
- [11] UTF-8, Wikipedia
- [12] Vad ska jag ställa in min lokal och vad är konsekvenserna av att göra det??
- [13] ISO 639-1, Wikipedia
- [14] ISO 639-2, Wikipedia
- [15] ISO 3166, Wikipedia
- [16] Teckenuppsättning Beskrivningsfiler
- [17] Lokal, Ubuntu Wiki
- [19] lokaliserar Debian-paketet
- [20] Lokalt hjälparprojekt