7

Projektuję schemat wiadomości na platformie mikroblogowania, która będzie musiała mieć zdefiniowany język. Wiadomości te będą rozpowszechniane w sieciach między wieloma węzłami, dlatego muszę uczynić ten schemat zwartym, ale wciąż całkowicie wielojęzycznym.Jakiego typu danych należy użyć dla kodów językowych IETF?

Mam zamiar użyć IETF language codes (en, en-AU itp.), Ale muszę wiedzieć, czy istnieje określony sposób ich reprezentowania dla celów efektywności. Istnieje wiele standardów dla znaczników języków, ale obecna specyfikacja RFC 5646 jest zawikłana przez zachowanie zgodności wstecz z poprzednimi standardami. Nie dokładnie rozumiem wymagania dotyczące miejsca, ponieważ istnieje wiele podznaczników.

Jaki jest najbardziej efektywny pod względem przestrzeni sposób reprezentowania kodu języka IETF?

Odpowiedz

9

Wydaje mi się, że specyfikacje IETF dotyczące obsługi kodów locale to rzeczywiście "najlepsza wspólna praktyka" w branży, ale na pewno nie bez kompromisów, aby zachować kompatybilność wsteczną i takie. Nadal zalecam dostosowanie go do twoich potrzeb, ponieważ używają go najważniejsze biblioteki i standardy internacjonalizacji (Unicode, ICU).

BCP47/RFC5646 section 4.4.1 zaleca długości 35 znaków 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 

Ale w przypadku, gdy tylko dbają o języku i skryptu (zamiast informacji regionie, który oznacza część locale wrażliwych danych, takich jak format daty i czasu), możesz zrobić to z maksymalnie 13 znakami.

W rzeczywistości większość tagów będzie oznaczać tylko dwa znaki dla danego języka. Jedynymi typowymi przykładami, z którymi radzę sobie regularnie i wymagają podtagów skryptu, są sr-Latn i sr-Cyrl (odpowiednio, serbski pisany w języku łacińskim lub cyrylicą), zh-Hant (chiński tradycyjny) i zh-Hans (chiński uproszczony). Poza tym najprawdopodobniej nie będziesz potrzebować wariantów, co oznacza, że ​​większość przykładów kodów regionalnych z tego świata powinna być ograniczona do 17 znaków.