ms-ai-architect/skills/ms-ai-advisor/references/copilot-extensibility/copilot-studio-localization-globalization.md
Kjell Tore Guttormsen 1c9af82daa refactor(ms-ai-architect): R13b — nøytraliser de mekaniske persona-forekomstene utenfor headinger, etter at ordrens egen korrigerte bøttegrense ble målt usann
Ordren ba meg behandle sitt eget premiss som et premiss: «PM-ens 87/45 er korrigert
til 85/47 ved maaling ... Behandle ogsaa 85/47 som et premiss og re-maal det foer du
bygger.» Re-målt over de 389 ref-filene holder 85/47 heller ikke — og feilen ligger i
KLASSIFIKATOREN, ikke i tellingen. Summen 132 står; fordelingen er 62/70.

TRE FUNN, alle pinnet i test:

1. FJORTEN bold-etiketter er DIALOG-ATTRIBUSJONER, ikke etiketter. Dialog-bøtta
   matchet bare kursivformen `*Cosmo:*`. Fetformen står foran sitert tale —
   `**Naar kunden sier:** "..."` / `**Cosmo svarer:** "..."` — så å slette den
   etterlater replikken uten taler. Redaksjonelt, ikke mekanisk.
2. TI tabellceller er PROVENIENSPÅSTANDER i kildekvalitets-kolonnen. Celleposisjon
   deler de 26 tabellforekomstene i tre klasser, ikke én: 12 radetiketter (kolonne 0),
   4 kolonneoverskrifter, 10 proveniensverdier (`Moenstre er Cosmo-design`,
   `Raadgivende innhold basert paa Cosmo-persona`). Å skrive om en av dem er å avgi en
   ny påstand om hvor innholdet kommer fra, og den siste har ikke noe slettemål i det
   hele tatt. Seks av ordrens ni sammensetninger ligger helt inne i denne klassen —
   ordrens egen advarsel traff, målingen lokaliserte den.
3. Lekkasje ANDRE veien, +1 mekanisk: `- **For arkitekten (Cosmo):** ...` i
   reasoning-models-o1-o3-optimization.md:549 er nøyaktig målklassen, men et
   linjestart-forankret nett ser den ikke bak `- ` og bokførte den som prosa.

Operatøren ratifiserte 2026-09-15 alt. A: kjør de 62, hold dialog og proveniens for
R14. Begge tilbakeholdte klasser henger på #R14-persona-ramme som aldri er besvart;
de 62 gjør ikke det, fordi R13 ALT har kjørt `For Cosmo` -> `For arkitekten` over 401
headinger — dette gjør bare etiketter og tabellrader konsistente med en beslutning
som allerede er utført.

UTFØRT: 62 forekomster i 50 filer (ordren sa 47) — 46 etiketter i 16 ratifiserte
varianter, 16 celler i 4. Diffen er 62 fjernet = 62 lagt til, ren in-place-erstatning;
hver endret linje klassifisert, ANNET = 0. Ingen måltekst innfører et ord kilden ikke
hadde, utover R13s sanksjonerte `arkitekten` (samme invariant-test, gjenbrukt).

GATEN, DEKOMPONERT I TRE KLAUSULER, hver validert BEGGE veier før den ble konsumert:
  R1 REFERENT      mekaniske sites 62 -> 0, produkt 451 uendret.
                   Kjent-pos: `**For Cosmo:**` OG `| Cosmos raad |` (genitiven er den
                   et bold-only nett mister) feller begge. Kjent-neg:
                   `**Cosmos DB-anbefaling:**` — ser ut som persona, er produkt —
                   og `| Azure Cosmos DB |` passerer urørt.
  R2 REKKEVIDDE    0 umålte varianter, 0 utenfor rekkevidde. Kjent-pos: en ukjent
                   etikettform rapporteres som umålt OG transformen KASTER, den
                   hopper ikke stille over. Kjent-neg: dialog + proveniens bokføres
                   utenfor scope og er byte-identiske.
  R3 HVA SOM STÅR  16 redaksjonelle etiketter + 10 celler uendret, heading/TOC
                   fortsatt 0 (R13 ikke regradert), prosa 132 -> 70. Kjent-pos: et
                   fjernet tegn i `Cosmos DB` feller produkt-differansen. Kjent-neg:
                   alle kun-produkt-filer byte-identiske gjennom transformen.

Gaten ble kjørt FØR transformen og felte R1 (exit 1) — et nullresultat som aldri er
tvunget til det andre svaret er ingen måling. R13b har egen baseline-fil;
cosmo-gate-baseline.json er et referansepunkt-artefakt (personaHeadings 401) og er
IKKE re-emittert. Ny .gitignore-negasjon (6 entries), aldri `git add -f`.

Målt underveis: 0 av de 62 målinjene ligger i en kodeblokk, så fence-agnostisk
transform er trygg her — samme konklusjon R13 nådde for headinger. Nøyaktig 1 linje
bærer begge klasser; dens `Cosmo-persona` står igjen, som den skal.

Suite 1134/1134 (1120 + 14 nye), validate-plugin 250/0/0, transform idempotent,
R13-driveren fortsatt no-op. RX-OPS1 adversarial-scan kjørt MANUELT på de 56 stagede
filene (OK, exit 0) — `core.hooksPath` skygger repoets pre-commit, fiksen eies av
`.claude`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 21:09:00 +02:00

658 lines
25 KiB
Markdown

# Localization and Globalization in Copilot
**Last updated:** 2026-06-19
**Status:** GA
**Category:** Copilot Extensibility & Integration
---
## Introduksjon
Localization og globalization handler om å gjøre Copilot-løsninger tilgjengelige og effektive på tvers av språk og kulturer. Microsoft Copilot-plattformen (inkludert Copilot Studio, Microsoft 365 Copilot, og Azure AI) tilbyr omfattende flerspråklig støtte som gjør det mulig å bygge én enkelt agent som kan kommunisere med brukere på deres eget språk.
**Nøkkelforskjell:**
- **Localization (L10N):** Tilpasning av innhold til spesifikke språk (translations, UI strings)
- **Globalization (G11N):** Formatering av data i henhold til locale (datoer, valuta, tall, postnummer)
I praksis kombinerer Microsofts tilnærming begge: automatisk språkgjenkjenning, dynamisk oversettelse, og locale-basert formatering i én sammenhengende opplevelse.
**Viktige prinsipper:**
- **Browser-basert språkdeteksjon** (anbefalt): Agenten svarer automatisk på brukerens nettleserspråk
- **Dynamisk språkbytte**: Agenter med generative orchestration kan bytte språk midt i samtalen
- **Primærspråk + sekundærspråk**: Alt authoring i primærspråk, oversettelser håndteres via JSON/ResX-filer
- **Automatisk generativ oversettelse**: Generative svar oversettes automatisk når generative orchestration er aktivert
**Confidence marker:** Verified (MCP microsoft-learn, 2026-02)
---
## Kjernekomponenter
### 1. Copilot Studio Multilingual Agents
**Primærspråk vs. Sekundærspråk:**
- **Primærspråk**: Settes ved opprettelse av agent, kan ikke endres senere (men region kan justeres)
- **Sekundærspråk**: Legges til via Settings > Languages, krever manuell oversettelse av statisk innhold
**Språkdeteksjon:**
- Brukerens nettleser-locale detekteres automatisk ved session start
- Hvis språket ikke er konfigurert for agenten, fallback til primærspråk
- Systemvariabel `System.User.Language` styrer aktivt språk
- Voice agents støtter spesifikke multilingual workstreams med telefonnummer per språk
**Authoring-modell:**
- All authoring i primærspråk (redigeringskanvas, topics, nodes)
- Oversettelser håndteres via **localization files** (JSON eller ResX)
- For generative svar: automatisk oversettelse (ingen manuell fil)
- For statiske meldinger: Last ned fil → oversett → last opp
**Confidence marker:** Verified (MCP microsoft-learn, 2026-02)
### 2. Systemvariabel: System.User.Language
**Sentralt kontrollpunkt for språk:**
- Setter agentens aktive språk i samtalen
- Kan settes manuelt, programmatisk, eller detekteres automatisk
- Brukes både for søk i knowledge sources og generering av svar
**Effekt på oppførsel:**
- **Knowledge search**: Søk oversettes til språket i `System.User.Language` (auto-translation for search query)
- **Answer generation**: Svar genereres på språket i `System.User.Language` (auto-translation for answer generation)
- **Manual override**: Kan settes eksplisitt i topics for å tvinge språkbytte
**Eksempel: Midtsamtale språkbytte**
```yaml
# I en topic, etter en Question node:
kind: SetVariable
variable: System.User.Language
value: "nb-NO"
```
Best practice: Bytt språk rett etter en **Question** node for å sikre konsistens i meldinger mellom spørsmål.
**Confidence marker:** Verified (MCP microsoft-learn, 2026-02)
### 3. Dynamic Language Switching (Generative Orchestration)
**Kun tilgjengelig med generative orchestration aktivert.**
Agent kan detektere brukerens språk i hver melding og bytte språk dynamisk gjennom samtalen.
**Implementasjonsmønster (Verified 2026-04):**
1. Opprett topic med trigger "A message is received"
2. Legg til prompt-node: instructions = "Determine which language this message is written in: " + Add content → Text (Name: "Message")
3. Sett Output format til JSON → Test → Save
4. Konfigurer Prompt node: Input = `Activity.Text`, Output = ny variabel `DetectedLanguage`
5. Legg til Condition node basert på `DetectedLanguage.structuredOutput.language`
6. For hver branch: Sett `User.Language` (system variable) til detektert språk
**Viktige hensyn:**
- **Kostnad**: Språkdeteksjon bruker AI prompts og genererer usage costs
- **Vedlikehold**: Custom language topics må vedlikeholdes over tid
- **Anbefaling**: For de fleste scenarioer er browser-based localization enklere og mer kostnadseffektivt
**Confidence marker:** Verified (MCP microsoft-learn, 2026-02)
### 4. Localization Files (JSON/ResX)
**Workflow:**
1. **Last ned**: Settings > Languages > Upload (for sekundærspråk) → velg format (JSON/ResX)
2. **Oversett**: Fil inneholder alle strings i primærspråk, erstatt med oversettelser
3. **Last opp**: Upload fil via samme panel
4. **Test**: Test panel → velg språk → verifiser samtale
**Håndtering av endringer:**
- Nye strings: Vises i primærspråk i nedlastning, må oversettes manuelt
- Modifiserte strings: Beholder samme ID, må sammenlignes med forrige fil for å identifisere endringer
- **Incremental changes er IKKE auto-translated** — manuell prosess påkrevd
**Limitasjoner:**
- **Adaptive Cards**: Mixed-type strings (statisk tekst + variabler) inkluderes IKKE i localization files
- **Workaround (Verified 2026-04):** Bruk "Set variable value" node → åpne code editor → endre `kind: SetVariable` til `kind: SetTextVariable` → legg inn full streng med variabler → referer kun til variabelen i Adaptive Card
- Etter lagring kan localization-filen lastes ned og vil inkludere den mixed-type strengen som en `setVariable`-action
**Confidence marker:** Verified (MCP microsoft-learn, 2026-02)
### 5. Globalization (Locale Formatting)
**Copilot Studio formaterer automatisk:**
- **Dato og tid**: `2/3` = March 2 (en-GB) vs. February 3 (en-US)
- **Tall**: Tusen-separator og desimaltegn varierer
- **Postnummer**: Validering og format (ZIP vs. postal code)
- **Valuta**: Symbol og plassering
- **Hastighet**: km/h vs. mph
**Støttede locale for web app:**
- en-AU, en-CA, en-GB, en-IN, en-US
**Teams app:**
- Støtter bredere sett enn Copilot Studio
- Hvis Teams-språk ikke støttes av Copilot Studio → fallback til en-US
**Confidence marker:** Verified (MCP microsoft-learn, 2026-02)
### 6. Microsoft 365 Copilot Language Support
**Microsoft 365 Copilot** har utvidet språkstøtte utover Copilot Studio. Per august 2025 ble 6 nye språk lagt til: Albanian, Filipino, Icelandic, Malay, Maltese, Serbian (Cyrillic).
**Agent Builder i Microsoft 365 Copilot:**
- **Authoring canvas languages**: 25 språk (inkludert norsk bokmål nb-NO) per Copilot Studio language support dokumentasjon
- **Describe tab**: Støtter alle språk som Microsoft 365 Copilot støtter
**Voice agents:**
- Støtter multilingual voice channels med egne telefonnumre per språk
- Eller én telefon med multiple språk via workstream-konfigurasjon
**Confidence marker:** Verified (MCP microsoft-learn, 2026-02)
---
## Arkitekturmønstre
### Mønster 1: Browser-Based Localization (Anbefalt)
**Tilnærming:**
- Agent responderer automatisk på brukerens nettleserspråk
- Ingen custom logic nødvendig
- Sekundærspråk konfigureres i Settings > Languages
**Når å bruke:**
- Globale eller store publikum
- Enklest oppsett
- Brukere kan endre nettleserspråk
**Konfigurasjon:**
1. Add languages i Copilot Studio (Settings > Languages)
2. Last ned localization files, oversett, last opp (valgfritt for generative agents)
3. Publish
**Fordeler:**
- Enkel å vedlikeholde
- Ingen ekstra kostnader
- Skalerer godt
**Ulemper:**
- Krever at brukere setter korrekt nettleserspråk
- Språk settes ved session start, ikke dynamisk
**Confidence marker:** Verified (MCP microsoft-learn, 2026-02)
### Mønster 2: Dynamic Language Switching (Avansert)
**Tilnærming:**
- Custom topic med "Message received" trigger
- Prompt for språkdeteksjon i hver melding
- Condition-basert setting av `System.User.Language`
**Når å bruke:**
- Brukere bytter språk ofte i samme samtale
- Nettleserspråk reflekterer ikke brukerens faktiske preferanse
- Avansert brukscase med høy språkfleksibilitet
**Konfigurasjon:**
1. Aktiver generative orchestration
2. Opprett topic med "Message received" trigger
3. Legg til prompt-node (input: `Activity.Text`, output: `DetectedLanguage`)
4. Condition: sjekk `DetectedLanguage.structuredOutput.language`
5. Set `System.User.Language` per branch
**Fordeler:**
- Høyeste fleksibilitet
- Brukere kan bytte språk fritt
**Ulemper:**
- **Kostnad**: AI prompts per melding
- **Vedlikehold**: Custom logic må oppdateres
- **Kompleksitet**: Mer å teste og validere
**Confidence marker:** Verified (MCP microsoft-learn, 2026-02)
### Mønster 3: Separate Agents per Language (Legacy)
**Tilnærming:**
- Én agent per språk
- Ingen delt innhold
**Når å unngå:**
- Microsoft anbefaler nå multilingual agents
- Høyere vedlikeholdskostnad
- Vanskeligere å holde konsistent
**Bruk kun hvis:**
- Regulative krav krever separasjon
- Svært spesialisert innhold per marked
**Confidence marker:** Baseline (legacy approach)
### Mønster 4: Real-Time Translation Proxy (Mellomtjeneste)
**Tilnærming:**
- Ekstern oversettelsestjeneste (f.eks. Azure Translator) mellom bruker og agent
- Agent opererer kun på primærspråk
- Oversettelse før/etter agent-interaksjon
**Når å bruke:**
- Agent har ikke språk konfigurert for brukerens behov
- Integrasjon med eldre systemer
- Real-time translation av eksterne data sources
**Fordeler:**
- Agent forblir enkel
- Kan støtte vilkårlige språk via Azure Translator
**Ulemper:**
- Ekstra latency
- Oversettelseskostnad per melding
- Kan miste kontekst/nyanse
**Confidence marker:** Baseline (integrasjonsmønster)
---
## Beslutningsveiledning
### Når skal du velge hva?
| Scenario | Anbefalt tilnærming | Begrunnelse |
|----------|---------------------|-------------|
| Global SaaS-agent (10+ språk) | Browser-Based Localization | Enkelt, skalerbart, ingen ekstra kostnader |
| HR-agent for multinasjonalt selskap | Browser-Based Localization | Brukere har riktig nettleserspråk satt |
| Kundeservice-agent (dynamisk språk) | Dynamic Language Switching | Kunder kan ikke alltid endre nettleserspråk |
| Voice agent (telefon) | Multilingual workstream med språkvalg | Standard mønster for voice channels |
| Agent med svært spesialisert domene per marked | Separate Agents per Language | Kun hvis innhold er fundamentalt forskjellig |
| Legacy integrasjon | Real-Time Translation Proxy | Når agent ikke kan endres |
### Sjekkliste for språkstrategi
1. **Identifiser språkbehov:**
- Hvilke språk trenger brukerne?
- Sjekk mot [Copilot Studio language support](https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-language-support)
2. **Vurder brukeratferd:**
- Har brukere riktig nettleserspråk?
- Bytter de språk ofte i samme samtale?
3. **Vurder innholdstype:**
- Mye statisk innhold (topics) → trenger localization files
- Mye generativt innhold → automatisk oversettelse
4. **Vurder kostnad:**
- Dynamic language switching → AI prompt cost per melding
- Browser-based → ingen ekstra kostnad
5. **Vurder vedlikehold:**
- Localization files → manuell prosess ved endringer
- Generative orchestration → automatisk, men krever testing
6. **Test grundig:**
- Test panel → bytt språk → verifiser samtaler
- Demo website → sett nettleserspråk → verifiser
**Confidence marker:** Verified (MCP microsoft-learn, 2026-02)
---
## Integrasjon med Microsoft-stakken
### Copilot Studio + Microsoft 365 Copilot
**Agent Builder:**
- Opprett agents i Microsoft 365 Copilot via Agent Builder
- Authoring canvas i 25 språk (inkludert norsk bokmål nb-NO)
- Describe tab støtter alle M365 Copilot-språk
**Integrasjon:**
- Agents opprettet i Copilot Studio kan integreres i M365 Copilot
- Språkstøtte følger Copilot Studio-regler (primær + sekundære språk)
- Generative svar oversettes automatisk hvis orchestration er aktivert
**SharePoint Agents:**
- Kan deles i Teams
- Støtter multiple SharePoint agents i én group chat/channel
- Respekterer brukerens Teams-språkinnstilling
**Confidence marker:** Verified (MCP microsoft-learn, 2026-02)
### Azure AI Services Integration
**Azure Speech Services:**
- Language identification for voice agents
- `AutoDetectSourceLanguageConfig` for automatisk språkdeteksjon
- Støtter custom speech models per språk
**Azure Translator:**
- Real-time translation proxy pattern
- Kan brukes for oversettelse av knowledge sources
- Støtter 100+ språk utover Copilot Studio
**Azure CLU (Conversational Language Understanding):**
- Multilingual intent recognition
- Må synkroniseres med Copilot Studio topics
- Se [Azure CLU supported languages](https://learn.microsoft.com/en-us/azure/ai-services/language-service/conversational-language-understanding/language-support)
**Confidence marker:** Verified (MCP microsoft-learn, 2026-02)
### Power Platform Integration
**Power Automate:**
- Flows kan motta språkparameter fra agent
- Bruk `System.User.Language` i adaptive cards/flows
- Adaptive Cards kan lokaliseres via workaround (Set text variable)
**Dataverse:**
- Flerspråklige entity labels
- Language-aware queries
- User preferred language field
**AI Builder:**
- Language detection model via Power Fx: `'Language detection'.Predict(text).Language`
- Kan brukes for pre-processing eller validering
**Confidence marker:** Verified (MCP microsoft-learn, 2026-02)
### Dynamics 365 Customer Service (Voice Agents)
**Multilingual Voice Channels:**
- Konfigurer workstream med primær + sekundære språk
- Routing rules basert på `Conversation.CustomerLanguage`
- Separate queues per språk
**Bot Framework Composer:**
- Legacy approach for multilingual voice bots
- Nyere Copilot Studio multilingual agents anbefales nå
**Confidence marker:** Verified (MCP microsoft-learn, 2026-02)
---
## Offentlig sektor (Norge)
### Språkkrav i norsk offentlig sektor
**Lovverk:**
- **Språkloven**: Offentlige tjenester skal være tilgjengelige på norsk (bokmål og nynorsk)
- **Samisk språklov**: Krav om samisk i enkelte regioner/sektorer
- **Universell utforming**: Inkluderer språklig tilgjengelighet
**Praktisk tilnærming:**
1. **Primærspråk**: Norsk bokmål (nb-NO)
2. **Sekundærspråk**: Nynorsk (nn-NO), samisk (kun hvis påkrevd)
3. **Engelsk**: For internasjonale brukere (en-US eller en-GB)
**Copilot Studio-støtte for norsk (Verified 2026-04):**
- **Bokmål (nb-NO)**: Fully supported i alle features — authoring canvas, generative answers, orchestration, og voice
- **Nynorsk (nn-NO)**: Ikke oppført i language support-dokumentasjonen → vurder Azure Translator proxy
- **Samisk**: Ikke native støtte → vurder Azure Translator proxy
**Confidence marker:** Baseline + Verified (language list)
### Spesifikke hensyn
**Personvern (GDPR):**
- Språkpreferanse kan være persondata
- Lagring av `System.User.Language` i sessions data
- Vurder databehandleravtale for oversettelsestjenester
**Tilgjengelighet (WCAG):**
- Locale-formatering viktig for skjermlesere (datoer, tall)
- Bruk Copilot Studios innebygde formatting (ikke custom logic)
**Sikkerhetsklarering:**
- Vurder om oversettelsestjenester (Azure Translator) kan brukes med klassifisert data
- Dynamic language switching → LLM-basert → vurder dataplassering
**Kostnadsmodell for stat/kommune:**
- Browser-based localization → ingen ekstra kostnader
- Dynamic language switching → budsjett for AI prompt usage
**Anbefaling for offentlig sektor:**
- **Start med browser-based localization** (bokmål + engelsk)
- Legg til nynorsk hvis påkrevd (manual translation)
- Vurder dynamic switching kun for spesialiserte use cases
**Confidence marker:** Baseline (policy interpretation)
---
## Kostnad og lisensiering
### Copilot Studio Licensing
**Per-user eller per-session:**
- Multilingual agents teller ikke som separate agents
- Ingen ekstra kostnad for å legge til sekundærspråk
**Consumption-basert (Pay-as-you-go):**
- Generative orchestration bruker AI capacity
- **Dynamic language switching**: Ekstra prompts per melding → økt consumption
**Estimat (Dynamic Language Switching):**
- Språkdeteksjon: ~50-100 tokens per melding
- Hvis 10 000 meldinger/måned → ~500k-1M ekstra tokens
- Kostnad avhenger av Copilot Studio pricing tier
**Anbefaling:**
- Bruk browser-based localization for kostnadsoptimalisering
- Dynamic switching kun når nødvendig
**Confidence marker:** Baseline (pricing må verifiseres per kunde)
### Azure Translator (hvis proxy-pattern)
**Pay-per-character:**
- Standard pricing: ~$10 per 1M characters (varierer per region)
- Custom Translator: Ekstra kostnad for custom models
**TCO-sammenligning:**
- Browser-based: $0 ekstra
- Dynamic switching (Copilot Studio): Basert på AI capacity
- Azure Translator proxy: Per-character cost
**Confidence marker:** Baseline (external pricing)
### Vedlikeholdskostnad
**Localization files:**
- Manuell oversettelse ved hver endring i topics
- Estimat: 2-4 timer per språk per større oppdatering
**Dynamic language switching:**
- Testing av språkdeteksjon: 1-2 timer per språk
- Vedlikehold av custom topic: Løpende
**Generative orchestration:**
- Automatisk oversettelse → minimal vedlikehold
- Men krever grundig testing av kvalitet
**Anbefaling:**
- For statisk innhold: Invester i localization workflow
- For generativt innhold: Bruk auto-translation
**Confidence marker:** Baseline (estimater)
---
## For arkitekten
### Når kunden spør om flerspråklig støtte
**Typiske spørsmål:**
1. "Kan Copilot-agenten vår støtte norsk og engelsk?"
2. "Hvordan håndterer vi brukere som bytter språk midt i samtalen?"
3. "Må vi bygge separate agents for hvert språk?"
4. "Hva koster det å legge til flere språk?"
**Mitt svar (Cosmo):**
1. **Start alltid med browser-based localization** → enklest, billigst, skalerbart
2. **Sjekk language support** → norsk bokmål er fully supported
3. **Vurder innholdstype:**
- Mye statisk (topics) → planlegg for localization files
- Mye generativt → aktiver generative orchestration for auto-translation
4. **Dynamic switching kun hvis:**
- Brukere bytter språk ofte i samme session
- Browser-språk ikke kan stoles på
5. **Separate agents kun hvis:**
- Regulative krav
- Innhold er fundamentalt forskjellig per marked
### Anbefalte spørsmål til kunden
1. **Brukeratferd:**
- Hvor mange språk trenger dere?
- Har brukerne riktig nettleserspråk satt?
- Bytter de språk ofte?
2. **Innholdstype:**
- Hvor mye statisk innhold (topics, prompts)?
- Hvor mye generativt innhold (knowledge sources)?
- Adaptive Cards med variabler?
3. **Vedlikehold:**
- Hvem oversetter innhold?
- Hvor ofte endres topics?
- Kan dere automatisere oversettelse (translation memory)?
4. **Kostnad:**
- Hva er budsjettet for AI capacity?
- Akseptabelt med manuell oversettelsesprosess?
5. **Compliance:**
- GDPR-hensyn rundt språkpreferanse?
- Krav om spesifikke språk (nynorsk, samisk)?
- Sikkerhetsklarering for oversettelsestjenester?
### Red flags
**"Vi trenger 20+ språk umiddelbart"**
→ Foreslå faseinndeling: Start med 2-3 viktigste språk, valider, deretter skaleringstrategi
**"Brukerne må kunne bytte språk uten å endre nettleser"**
→ Vurder om dynamic switching faktisk trengs, eller om in-agent language selector (custom logic) er nok
**"Vi vil oversette alt manuelt"**
→ Vurder om generative orchestration kan redusere manuell innsats (særlig for knowledge-driven answers)
**"Vi bygger én agent per språk fordi det er enklere"**
→ Utfordre: Separate agents er vanskeligere å vedlikeholde langsiktig
### Suksesskriterier
**Språkstrategi definert:** Browser-based vs. dynamic switching
**Language support verifisert:** Sjekket mot Microsoft-dokumentasjon
**Localization workflow:** Prosess for nedlasting, oversettelse, opplasting
**Testing plan:** Scenario per språk, både statisk og generativt innhold
**Kostnad estimert:** AI capacity for dynamic switching, vedlikehold for localization files
**Compliance vurdert:** GDPR, språklov, sikkerhetsklarering
### Arkitekturbeslutninger å dokumentere (ADR)
1. **Språkstrategi:** Browser-based vs. dynamic switching vs. separate agents
2. **Primær- og sekundærspråk:** Hvilke språk, hvilken rekkefølge
3. **Oversettelsesprosess:** Manuell vs. automatisk, hvem har ansvar
4. **Generative orchestration:** On/off, og implikasjoner for auto-translation
5. **Azure Translator integrasjon:** Hvis proxy-pattern brukes
6. **Testing-strategi:** Hvordan verifisere kvalitet per språk
### Quick-win anbefaling
**Fase 1 (MVP):**
- Primærspråk: Norsk bokmål (nb-NO)
- Sekundærspråk: Engelsk (en-US)
- Tilnærming: Browser-based localization
- Innhold: Generative orchestration → auto-translation
**Fase 2 (Scale):**
- Legg til flere sekundærspråk basert på faktisk brukerdata
- Implementer localization workflow for statisk innhold
- Vurder dynamic switching hvis brukerfeedback indikerer behov
**Fase 3 (Optimize):**
- Translation memory for effektiv oversettelse
- Custom Translator models for domene-spesifikk terminologi
- Analytics på språkbruk for optimalisering
**Confidence marker:** Baseline (rådgivning)
---
## Kilder og verifisering
### Microsoft Learn (Verified via MCP 2026-02)
1. **Configure and create multilingual agents** (Re-verified MCP 2026-06-19)
https://learn.microsoft.com/en-us/microsoft-copilot-studio/multilingual
- Primær kilde for Copilot Studio multilingual configuration
- Dekker: add languages, localization files, dynamic language switching, testing, adaptive card localization workaround
2. **Regional settings including supported locales and formats**
https://learn.microsoft.com/en-us/microsoft-copilot-studio/data-localization
- Globalization og locale formatting
- Supported locales for web app og Teams
3. **Design effective language understanding**
https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/language-understanding
- `System.User.Language` variable
- Auto-detect spoken language
- Best practices for localization
4. **Language support** (Re-verified MCP 2026-06-19)
https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-language-support
- Full liste over støttede språk per feature (authoring canvas, generative answers, voice)
- Norsk bokmål (nb-NO) er GA i alle features
5. **Make Your Employee Self-Service Agent Multilingual**
https://learn.microsoft.com/en-us/copilot/microsoft-365/employee-self-service/employee-self-service-multilingual
- Browser-based localization (recommended)
- Dynamic language switching (advanced)
- Known limitations
6. **Agent Builder regional availability and language support**
https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/agent-builder-regional-availability
- M365 Copilot Agent Builder language support
- Authoring canvas languages (25 inkludert norsk bokmål nb-NO)
7. **Microsoft 365 Copilot release notes**
https://learn.microsoft.com/en-us/copilot/microsoft-365/release-notes
- Nyeste språkutvidelser (Albanian, Filipino, etc. per aug 2025)
- Multilingual support i Viva Glint Copilot
### Azure AI Services (Referenced)
8. **Azure Speech Services Language Identification**
https://learn.microsoft.com/en-us/azure/ai-services/speech-service/language-identification
- Auto-detect source language for voice agents
- Code samples for multilingual translation
9. **Azure CLU Language Support**
https://learn.microsoft.com/en-us/azure/ai-services/language-service/conversational-language-understanding/language-support
- Conversational Language Understanding multilingual support
### Dynamics 365 (Referenced)
10. **Configure multilingual voice agents**
https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/configure-multilingual-agents
- Voice channel multilingual configuration
- Workstream og routing rules
### GitHub Samples (Referenced)
11. **CopilotStudioSamples - AutoDetectLanguageSample**
https://github.com/microsoft/CopilotStudioSamples/tree/main/AutoDetectLanguageSample
- Sample solution for auto-detect language with generative responses
### Baseline Knowledge (Model)
- GDPR og språkpreferanse som persondata
- Norsk språklov og samisk språklov
- WCAG-krav for locale formatting
- TCO-sammenligning for oversettelsesstrategier
**Total kilder:** 11 Verified (MCP), supplert med baseline policy-kunnskap
---
**Sluttord:**
Localization og globalization i Copilot-plattformen handler om å velge riktig balanse mellom enkelhet, kostnad og brukeropplevelse. **Browser-based localization er utgangspunktet** for de fleste scenarioer, mens **dynamic language switching** er en kraftig, men kostbar, løsning for spesialiserte behov. Med generative orchestration får du automatisk oversettelse av generativt innhold, noe som drastisk reduserer vedlikeholdsbyrden. For norsk offentlig sektor: Start med bokmål og engelsk, valider, og skaler deretter basert på faktisk behov.
**Anbefaling:** Gjør det enkelt først, skaler smart, og dokumenter valgene i en ADR.