I tag di linguaggio IETF BCP 47 sono definiti come enumerazioni ovunque in JDK?

2

I tag IETF BCP 47 sono definiti come enumerazioni ovunque in JDK?

Per Locale.forLanguageTag() passiamo valori come fr-FR , jp-JP ecc.

Esistono enumerazioni già fornite da JDK per questo? O lo sviluppatore dovrebbe scrivere un enum personalizzato per questo? Come gestirlo nell'applicazione i18n?

    
posta jaadhimalli 13.01.2014 - 07:28
fonte

2 risposte

3

Enum sarebbe un modo sbagliato per questo nell'API JDK che dovrebbe servire un'ampia varietà di applicazioni.

Sarebbe anche sbagliato nello sviluppo di applicazioni, a meno che l'applicazione non sia progettata per servire un sottoinsieme di linguaggi limitato e limitato - sottoinsieme noto al momento della compilazione - che, a sua volta, difficilmente si qualificherebbe come correlato a BCP-47 .

Questo perché l'attributo sostanziale di BCP-47 sta indirizzando un open-ended set dei valori:

Language tags are used to help identify languages, whether spoken, written, signed, or otherwise signaled, for the purpose of communication. This includes constructed and artificial languages but excludes languages not intended primarily for human communication, such as programming languages...

The ietf-languages list is an open list...

In alto, a sua volta, rende errato l'enum, che è destinato a servire fisso, serie limitate di valori :

You should use enum types any time you need to represent a fixed set of constants. That includes natural enum types such as the planets in our solar system and data sets where you know all possible values at compile time - for example, the choices on a menu, command line flags, and so on...

    
risposta data 13.01.2014 - 09:50
fonte
0

JDK non contiene enum per i tag di linguaggio IETF BCP 47. All'interno di Oracle JDK sono espressi all'interno di un array di stringhe non pubblico di una classe sun.util. *. Non dovresti prenderli da lì.

In Java 7 puoi scorrere le impostazioni locali disponibili e chiamare toLanguageTag () per ognuno o, come dici tu, crea il tuo enum.

    
risposta data 13.01.2014 - 09:15
fonte

Leggi altre domande sui tag