Rilevamento della Lingua: Supporto Multilingue Dinamico

Questo articolo spiega come rileviamo automaticamente e serviamo i contenuti nella lingua preferita dell'utente.

Il Problema: Servire Utenti Globali

Gli utenti provengono da paesi diversi e parlano lingue diverse:

  • India: Hindi, Bengali, Tamil, Telugu, Gujarati, Marathi, Kannada, Malayalam, Punjabi, Urdu

  • Europa: Tedesco, Francese, Spagnolo, Italiano, Portoghese, Russo

  • Asia: Giapponese, Coreano, Cinese

Dobbiamo rilevare la loro preferenza linguistica e servire automaticamente i contenuti tradotti.

Priorità di Rilevamento

Controlliamo più fonti in ordine:

1. Parametro URL (?lang=hi)

2. Sessione (memorizzata dopo il primo rilevamento)

3. Cookie (translation_lang o lang)

4. Intestazione Accept-Language del browser (futuro)

5. Default (Inglese)

Perché Questo Ordine?

Prima il parametro URL: Consente il cambio esplicito della lingua

Seconda la sessione: Persiste durante la sessione di navigazione

Terzo il cookie: Persiste tra le sessioni (30 giorni)

Ultimo il default: Ripiego per i nuovi utenti

Implementazione

def get_locale():
    # 1. Controlla il parametro URL
    lang_param = request.args.get("lang")
    if lang_param in valid_langs:
        return lang_param

    # 2. Controlla la sessione
    if "translation_lang" in session:
        return session["translation_lang"]

    # 3. Controlla il cookie
    # ... (dettagli di implementazione omessi)

Cambio Lingua

Gli utenti possono cambiare lingua tramite URL:

/p/Treo-N100-8-256?lang=hi

Questo attiva:

1. Imposta la sessione: session["translation_lang"] = "hi"

2. Imposta il cookie: translation_lang=hi; Max-Age=2592000 (30 giorni)

3. Reindirizza: Rimuove il parametro lang dall'URL

Vantaggio: URL puliti dopo la selezione della lingua

Lingue Supportate

Supportiamo 20 lingue:

Lingue indiane (10):

  • Hindi (hi)

  • Bengali (bn)

  • Tamil (ta)

  • Telugu (te)

  • Gujarati (gu)

  • Marathi (mr)

  • Kannada (kn)

  • Malayalam (ml)

  • Punjabi (pa)

  • Urdu (ur)

Lingue europee (7):

  • Tedesco (de)

  • Francese (fr)

  • Spagnolo (es)

  • Italiano (it)

  • Portoghese (pt)

  • Russo (ru)

Lingue asiatiche (3):

  • Giapponese (ja)

  • Coreano (ko)

  • Cinese (zh)

Traduzione dei Contenuti

Diversi tipi di contenuto utilizzano metodi di traduzione diversi:

Template Statici (Flask-Babel)

Navigazione, pulsanti, etichette tradotti tramite file .po:

{{ _('Add to Cart') }}  → "कार्ट में जोड़ें" (Hindi)

Contenuti Dinamici (TranslationManager)

Nomi prodotti, caratteristiche tradotti tramite tabelle di frasi:

"Mini PC" → "मिनी पीसी" (Hindi)

Contenuti Lunghi (DeepSeek AI)

Descrizioni prodotti, articoli tradotti tramite AI:

"Compact office computer..." → "कॉम्पैक्ट ऑफिस कंप्यूटर..." (Hindi)

Vedi: Sistema di Traduzione per i dettagli

Formattazione Regionale

La selezione della lingua influenza anche la formattazione:

Formato Numeri

Inglese: 1,234.56

Europeo: 1.234,56 (separatori invertiti)

Indiano: 1,23,456 (raggruppamento lakhs/crores)

Formato Data

Inglese: Feb 18, 2026

Europeo: 18.02.2026

Indiano: 18/02/2026

Valuta

Inglese: ₹1,234

Europeo: €1.234

Internazionale: $1,234

UI del Selettore Lingua

Gli utenti possono cambiare lingua tramite menu a discesa:

Posizione: Barra di navigazione superiore

Visualizzazione: Icona bandiera + nome lingua

Comportamento: Ricarica la pagina con ?lang=<code>

Considerazioni SEO

Struttura URL

Utilizziamo URL singolo per tutte le lingue (nessun prefisso /hi/, /de/):

Vantaggio: Architettura più semplice, nessun problema di contenuti duplicati

Svantaggio: Minore valore SEO per lingua

Tag Hreflang

Aggiungiamo link per lingue alternative:

<link rel="alternate" hreflang="en" href="https://www.thinvent.in/p/Treo-N100">
<link rel="alternate" hreflang="hi" href="https://www.thinvent.in/p/Treo-N100?lang=hi">
<link rel="alternate" hreflang="de" href="https://www.thinvent.in/p/Treo-N100?lang=de">

Vantaggio: Google sa quale versione linguistica mostrare

Strategia di Ripiego

Se manca la traduzione per la lingua selezionata:

1. Prova l'Inglese: La maggior parte dei contenuti ha una versione inglese

2. Mostra l'originale: Meglio di niente

3. Accoda per traduzione: Aggiungi alla coda di traduzione per l'elaborazione in batch

Prestazioni

Caching

Le traduzioni sono memorizzate nella cache in memoria:

Tabelle di frasi: Caricate una volta all'avvio

Traduzioni AI: Memorizzate nella cache del database

Vantaggio: Nessun sovraccarico di traduzione per richiesta

Caricamento Lazy

Le traduzioni vengono caricate solo quando necessario:

Descrizioni prodotti: Caricate alla visualizzazione della pagina prodotto

Contenuti pagina query: Caricati alla visualizzazione della pagina query

Vantaggio: Caricamento iniziale della pagina più veloce

Riferimenti

Concetti Tecnici

Librerie

Articoli Correlati

Riepilogo

Il rilevamento della lingua utilizza un sistema di priorità:

Ordine di rilevamento:

  • ✅ Parametro URL (?lang=hi)

  • ✅ Sessione (durante la navigazione)

  • ✅ Cookie (30 giorni)

  • ✅ Default (Inglese)

Supportato:

  • ✅ 20 lingue (10 indiane, 7 europee, 3 asiatiche)

  • ✅ Formattazione regionale (numeri, date, valuta)

  • ✅ Tag SEO hreflang

Metodi di traduzione:

  • ✅ Flask-Babel (template statici)

  • ✅ TranslationManager (nomi prodotti, caratteristiche)

  • ✅ DeepSeek AI (descrizioni, articoli)

Prestazioni:

  • ✅ Caching in memoria

  • ✅ Caricamento lazy

  • ✅ Caching nel database per traduzioni AI

Ciò consente il rilevamento automatico della lingua e un'esperienza multilingue senza interruzioni.


← Torna all'Indice della Documentazione