Java Locale to String

时间:2012-03-02 15:36:54

标签: java string locale

我需要将Locale转换为String,我该怎么做:

我有Locale loc和String loc1,需要将locale中的值转换为String。谢谢

3 个答案:

答案 0 :(得分:22)

这实际上取决于您使用的Java版本。当你说转换为String时,我假设你可能想:

  1. 将其转换为区域设置标识符,以便您以后可以轻松地重新创建区域设置。
  2. 将其作为String表示形式传递给系统的某个部分。
  3. 获取(可能是原生的)语言,国家或语言环境对象的名称。
  4. 其他人向您指出了文档,但我认为最好通过几种可能性。

    广告1.如果您需要转换为区域设置标识符,那么Java 7中的最佳方法(以前的版本中并不存在)是toLanguageTag()

    这是因为您可以轻松地将Locale标识符存储在字符串中(包括所有选项,如脚本,Unicode扩展等),并使用forLanguageTag(String)重新创建Locale对象,而不会丢失信息。简单toString()不包含此属性 以下代码片段说明了我的观点:

    Locale locale = Locale.getDefault(Locale.Category.DISPLAY);
    String localeId = locale.toLanguageTag();
    Locale recreatedLocale = Locale.forLanguageTag(localeId);
    

    在Java 7之前,您确实需要使用toString()并手动处理国家/地区和变体(对于Locale,最多包含三个由分隔符和下划线分隔的标识符,即no_NO_NY。)

    广告2.如果您需要将区域设置传递到系统的其他部分(即网络服务),toString()可能也可能不是您要查找的内容。这是因为我上面写的内容 - 如果你需要破折号作为分隔符并且不太关心变体,我会使用getLanguage()getCountry()方法而不是普通toString()

    Locale uiLocale = Locale.getDefault(Locale.Category.DISPLAY);
    String localeId = MessageFormat.format("{0}-{1}", 
                                           uiLocale.getLanguage(),
                                           uiLocale.getCountry());
    

    从1.4版开始,此方法适用于Java版本。

    广告3.如果您想要显示语言,国家/地区或地区显示名称,以便用户可以选择有效的区域设置(即在他/她的个人资料中),您可能需要的是getDisplayCountry(Locale),{{ 3}}和getDisplayLanguage(Locale)。您可以使用它们以目标用户语言显示名称(前提是JVM具有适当的翻译,对于许多语言都是如此):

    Locale uiLocale = Locale.getDefault(Locale.Category.DISPLAY);
    String languageName = uiLocale.getDisplayLanguage(uiLocale);
    String countryName = uiLocale.getDisplayLanguage(uiLocale);
    // usually something like langage (country), i.e. polski (Polska)
    String localeName = uiLocale.getDisplayName(uiLocale);
    

答案 1 :(得分:2)

根据您要对其进行的操作,您可以使用Locale类的toString方法:

http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html#toString%28%29

答案 2 :(得分:0)

它非常简单,只需使用下面的代码,考虑使用locale将iso当前的calander日期转换为Hijri Calander。

    mouse.x = ( (event.clientX -renderer.domElement.offsetLeft) / renderer.domElement.width ) * 2 - 1;
    mouse.y = -( (event.clientY - renderer.domElement.offsetTop) / renderer.domElement.height ) * 2 + 1;

    var deltaX = event.clientX - mouseX;
    var deltaY = event.clientY - mouseY;

    raycaster.setFromCamera(mouse, camera);
    var intersects = raycaster.intersectObjects(interactiveObj, true);