7

Sto progettando uno schema per un messaggio su una piattaforma di microblogging, che dovrà avere una lingua definita. Questi messaggi saranno distribuiti su reti tra molti nodi, quindi ho bisogno di rendere lo schema compatto ma ancora completamente multilingue.Quale tipo di dati dovrei utilizzare per i codici lingua IETF?

Utilizzerò il IETF language codes (en, en-AU ecc.), Ma ho bisogno di sapere se esiste un modo specifico per rappresentarli ai fini dell'efficienza. Esistono più standard per i tag della lingua, ma la specifica attuale RFC 5646 è complessa mantenendo la retrocompatibilità con gli standard precedenti. Non capisco esattamente i requisiti di spazio in quanto ci sono più sottotag.

Qual è il modo più efficiente in termini di spazio per rappresentare un codice lingua IETF?

risposta

9

Penso che le specifiche IETF per la gestione dei codici locali siano effettivamente il "Best Practice" del settore, ma sicuramente non senza compromessi per mantenere la retrocompatibilità e così via. Raccomando comunque di adattarlo alle vostre esigenze poiché le più importanti librerie e standard di internazionalizzazione (Unicode, ICU) lo stanno usando.

BCP47/RFC5646 section 4.4.1 raccomanda una lunghezza di 35 caratteri tag:

language  = 8 ; longest allowed registered value 
         ; longer than primary+extlang 
         ; which requires 7 characters 
    script  = 5 ; if not suppressed: see Section 4.1 
    region  = 4 ; UN M.49 numeric region code 
         ; ISO 3166-1 codes require 3 
    variant1  = 9 ; needs 'language' as a prefix 
    variant2  = 9 ; very rare, as it needs 
         ; 'language-variant1' as a prefix 

    total   = 35 characters 

       Figure 7: Derivation of the Limit on Tag Length 

Ma nel caso in cui vi interessa soltanto lingua e scrittura (piuttosto che le informazioni regione che denota alcuni dei dati locali sensibili come formati data e ora), quindi puoi accontentarti di 13 caratteri al massimo.

In realtà la maggior parte dei tag finirà per essere solo due caratteri per la lingua. Gli unici esempi comuni con cui mi occupo regolarmente e richiedono i sottotag di script sono sr-Latn e sr-Cyrl (rispettivamente, in serbo scritto in latino o cirillico), zh-Hant (cinese tradizionale) e zh-Hans (cinese semplificato). Inoltre, molto probabilmente non avrai bisogno delle varianti, il che significa che la maggior parte degli esempi reali di questi codici locali dovrebbe essere inferiore a un limite di 17 caratteri.

Problemi correlati