# Django 6.0.7 documentation

# Lokalisering av format

## Översikt

Djangos formateringssystem kan visa datum, tider och siffror i mallar med hjälp av det format som anges för den aktuella locale. Det hanterar också lokaliserad inmatning i formulär.

Två användare som får tillgång till samma innehåll kan se datum, tider och siffror formaterade på olika sätt, beroende på formaten för deras aktuella plats.

Observera

För att aktivera talformatering med tusentalsavgränsare måste du ange `USE_THOUSAND_SEPARATOR = True` i din inställningsfil. Alternativt kan du använda `intcomma` för att formatera siffror i din mall.

Observera

Det finns en relaterad `USE_I18N`-inställning som styr om Django ska aktivera översättning. Se Översättning för mer information.

## Lokalanpassad inmatning i formulär

När formatering är aktiverat kan Django använda lokala format när datum, tider och siffror analyseras i formulär. Det innebär att den försöker olika format för olika lokala när den gissar det format som används av användaren när han eller hon matar in data i formulär.

Observera

Django använder andra format för att visa data än de som används för att analysera data. Framför allt kan formaten för att analysera datum inte använda `%a` (förkortat veckodagsnamn), `%A` (fullständigt veckodagsnamn), `%b` (förkortat månadsnamn), `%B` (fullständigt månadsnamn) eller `%p` (AM/PM).

För att aktivera ett formulärfält för att lokalisera in- och utdata använder du dess `localize`-argument:

    class CashRegisterForm(forms.Form):
        product = forms.CharField()
        revenue = forms.DecimalField(max_digits=4, decimal_places=2, localize=True)

### Locale specific helpers

For country specific form fields, validation, and data formats that are not included in Django itself, consider using the django-localflavor package, which provides localized form fields and utilities for many countries and regions (documentation).

## Styrning av lokalisering i mallar

Django försöker använda ett lokalspecifikt format när det skriver ut ett värde i en mall.

Det är dock inte alltid lämpligt att använda lokaliserade värden - om du t.ex. skriver ut JavaScript eller XML som är utformat för att vara maskinläsbart vill du alltid använda icke-lokaliserade värden. Du kanske också vill använda lokalisering i utvalda mallar i stället för att använda lokalisering överallt.

För att möjliggöra en fin kontroll över användningen av lokalisering tillhandahåller Django mallbiblioteket `l10n` som innehåller följande taggar och filter.

### Malltaggar

#### `lokalisera`

Aktiverar eller inaktiverar lokalisering av mallvariabler i det block som ingår.

För att aktivera eller avaktivera lokalisering för ett mallblock, använd:

    {% load l10n %}

    {% localize on %}
        {{ value }}
    {% endlocalize %}

    {% localize off %}
        {{ value }}
    {% endlocalize %}

När lokalisering är inaktiverad tillämpas formaten lokaliseringsinställningar.

Se `localize` och `unlocalize` för mallfilter som gör samma sak per variabel.

### Mallfilter

#### `lokalisera`

Tvingar fram lokalisering av ett enda värde.

Till exempel:

    {% load l10n %}

    {{ value|localize }}

För att inaktivera lokalisering för ett enskilt värde, använd `unlocalize`. För att kontrollera lokalisering över en stor del av en mall, använd `localize` malltagg.

#### `avlokalisera`

Tvingar ett enskilt värde att skrivas ut utan lokalisering.

Till exempel:

    {% load l10n %}

    {{ value|unlocalize }}

För att tvinga fram lokalisering av ett enda värde, använd `localize`. För att kontrollera lokalisering över en stor del av en mall, använd `localize` malltagg.

Returnerar en strängrepresentation för tal (`int`, `float` eller `Decimal`) med lokaliseringsinställningar-formaten tillämpade.

## Skapa anpassade formatfiler

Django tillhandahåller formatdefinitioner för många lokala språk, men ibland kanske du vill skapa dina egna, eftersom det inte finns någon formatfil för ditt lokala språk, eller för att du vill skriva över några av värdena.

To use custom formats, specify the path where you’ll place format files first. To do that, set your `FORMAT_MODULE_PATH` setting to the package where format files will exist, for instance:

    FORMAT_MODULE_PATH = [
        "mysite.formats",
        "some_app.formats",
    ]

Filerna placeras inte direkt i den här katalogen utan i en katalog med samma namn som den lokala, och måste ha namnet `formats.py`. Var försiktig så att du inte lägger känslig information i dessa filer eftersom värdena inuti kan exponeras om du skickar strängen till `django.utils.formats.get_format()` (används av `date` mallfilter).

För att anpassa de engelska formaten skulle en struktur som denna behövas:

    mysite/
        formats/
            __init__.py
            en/
                __init__.py
                formats.py

där `formats.py` innehåller anpassade formatdefinitioner. Till exempel:

    THOUSAND_SEPARATOR = "\xa0"

för att använda ett obrutet mellanslag (Unicode `00A0`) som tusentalsavgränsare, i stället för standardkommat på engelska.

## Begränsningar för de lokala format som tillhandahålls

Vissa lokala språk använder kontextkänsliga format för siffror, vilket Djangos lokaliseringssystem inte kan hantera automatiskt.

### Schweiz (Tyska, franska)

Det schweiziska talformatet varierar traditionellt beroende på sammanhanget. Till exempel kan monetära värden använda en punkt som decimalavgränsare (`Fr. 23,50`), medan mått ofta använder ett komma (`22,5 m`). Djangos lokaliseringssystem stöder inte sådana kontextspecifika variationer automatiskt.

Det lokala formatet som tillhandahålls av Django använder generiska separatorer, ett komma för decimaler och ett mellanslag för tusentalsseparatorer.