noloman
Necesitaría obtener el nombre completo del país del código de país. Por ejemplo, para Holanda, necesitaría the Netherlands
del código de país NL
.
Pensé que podría hacer eso con Locale
como:
Locale loc = new Locale("NL");
loc.getCountry();
pero loc.getCountry();
esta vacio.
¿Cómo puedo hacer esto?
Raúl Baradia
Prueba así
Locale loc = new Locale("","NL");
loc.getDisplayCountry();
-
La versión anterior del parámetro único del constructor Locale toma el primer parámetro como idioma y no como código de país. Esto no funcionó en mi caso. Debería ser algo como esto, si se tiene que usar el código de país. Locale loc = new Locale(“”, “NL”);
–Rajat Sharma
10/10/2013 a las 10:35
-
Esto funcionó para mí, simplemente perdí mucho tiempo pensando qué estaba mal con Local (OneParam)… mi error, no revisé la documentación… pero gracias por compartir
– anoop4real
29 de noviembre de 2017 a las 6:16
Esto debería funcionar:
Locale l = new Locale("", "NL");
String country = l.getDisplayCountry();
El primer parámetro de Locale es el idioma, que no es útil en su caso.
-
si hago esto, recupera
NL
por lo que no es válido– noloman
11 de enero de 2013 a las 10:19
sol jiao
Me gustaría agregar más información a las respuestas anteriores.
Si desea especificar el idioma de los resultados, puede utilizar Locale("your language")
como el parámetro de getDisplayCountry()
.
Por ejemplo:
(new Locale("","NL")).getDisplayCountry(new Locale("ZH"));
“ZH” es el código de idioma chino. Obtendrá “荷兰”, que es el nombre chino de los Países Bajos.
Y puedes usar Locale("languages", "ISO-3166 code")
para especificar su variante de idioma.
Por ejemplo:
(new Locale("","NL")).getDisplayCountry(new Locale("ZH", "TW"));
Locale("ZH", "TW")
significa la variante del chino en Taiwán (chino tradicional). Tiene muchas diferencias con la variante de China continental.
Obtendrá “荷蘭”, que es el nombre chino tradicional de los Países Bajos.
(Incluso si no entiende chino, creo que es obvio que el segundo carácter chino en los dos nombres es diferente).
Si no especifica un idioma, obtendrá el nombre de Países Bajos en el idioma de visualización del dispositivo, que se puede cambiar en la configuración del teléfono. El código es:
(new Locale("","NL")).getDisplayCountry();
Puede obtener una lista de todos los idiomas y variantes compatibles con Android en esta pregunta:
Si estás usando kotlin:
Locale("", "NL").getDisplayCountry(Locale("ZH"))
Locale("", "NL").getDisplayCountry(Locale("ZH", "TW"))
Locale("", "NL").displayCountry
Intenta usar el otro constructor.
Locale loc = new Locale("NL", "The Netherlands");
Lugar
No parece haber una configuración regional predefinida para The Netherlands
Odaym
para una solución completa TelephonyManager (de esta solución):
TelephonyManager teleMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String localeCountry = teleMgr.getNetworkCountryIso();
if (localeCountry != null) {
Locale loc = new Locale("",localeCountry);
Log.d(TAG, "User is from " + loc);
}
-
Esto devuelve el ISO del dispositivo actual. Eso no es lo que pide la pregunta.
– Chad Bingham
28 de diciembre de 2018 a las 0:19
-
Esto devuelve el ISO del dispositivo actual. Eso no es lo que pide la pregunta.
– Chad Bingham
28 de diciembre de 2018 a las 0:19
puede obtener el código de país iso del dispositivo verifique esto getNetworkCountryIso()
– junio
11 de enero de 2013 a las 10:14
No estoy seguro, pero puedes usar loc.getDisplayCountry()
– MysticMagicϡ
11 de enero de 2013 a las 10:17
@ShreyaShah exactamente, ¡funciona así!
– noloman
11 de enero de 2013 a las 10:21