Symbole de devise locale
Je avoir des problèmes pour récupérer le symbole de devise par défaut du système.
Je suis le symbole de la devise de cette façon:
Currency currency = Currency.getInstance(Locale.getDefault());
Log.v("TAG",currency.getSymbol());
Lorsque le système de la langue est en English (United States)
le symbole s'affiche ($
).
Mais lorsque je choisis la langue Portuguese (Portugal)
il renvoie ce symbole ¤
.
Quelle peut en être la cause?
source d'informationauteur Filipe Batista | 2012-10-02
Vous devez vous connecter pour publier un commentaire.
Cela semble être un problème connu (http://code.google.com/p/android/issues/detail?id=38622.
Je suis arrivé à une solution possible de cette façon:
Car le problème est dans le Symbole, et non le code de la Devise, j'ai résolu ce problème en créant un statique
Map
où la clé est le CurrencyCode et la valeur de l' Symbole.Afin d'obtenir tous (ou presque) les monnaies des codes disponibles dans les lieux d'informations, vous pouvez faire quelque chose comme ceci:
Après que vous avez créé vous Carte avec les CurrencyCode et Symbole vous avez juste à quelque chose comme ceci:
Certaines pensées;
Pourrait-il que vous obtenez le symbole de l'Euro), mais votre police/log ne l'ai pas et il semble que le symbole?
Locale est un assez vif classe, c'est les constructeurs n'ont aucun contrôle d'erreur. Vous pouvez facilement voir les paramètres régionaux qui ne sont pas pris en charge ou n'existent pas vraiment dans les normes (telles que "de_US" pour "l'allemand comme parlées dans les états-unis").
Noter que les paramètres régionaux des données n'est pas nécessairement disponible pour tous les paramètres régionaux de pré-définies comme constantes dans cette catégorie, sauf pour en_US, qui est la seule paramètres régionaux Java garanties est toujours disponible, et il diffère dans les différentes versions d'Android, et peut également être limitée par l'opérateur ou personnalisé. pt_PT a été ajouté en 2.3.
Au sujet de l'option que vous avez présentés, si vous découvrez Unicode normes comme ils l'ont été mis en œuvre dans API8 et, le Portugal n'existe que comme un territoire (et non pas la combinaison).
Il peut être préférable si vous pouvez donc créer une partielle des paramètres régionaux de l'instance de l'indicatif du pays seul, puis obtenir le symbole de la devise pour le Portugal par exemple. Vous ne serez pas en mesure de respecter les prédéfinis la statique de paramètres Régionaux classe comme il assez de justesse à la prise en charge de différentes langues (C'est une courte liste), mais il devrait fonctionner comme cet endroit, qui présente les données que vous recherchez dans le système.
Je voudrais aussi essayer et voir si les devises.toString() renvoie l'EUR (le code ISO 4217 de la monnaie, généralement de un à trois lettres de l'acronyme).
Ce Formats votre int/double, d'une monnaie basée sur la Langue de l'Appareil
Et c'est de cette façon pour obtenir juste le Symbole de la monnaie, par le remplacement de tous les nombres, des points et des virgules