Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React intl是否支持根据位置转换国家名称?_Javascript_Reactjs_React Redux_React Intl - Fatal编程技术网

Javascript React intl是否支持根据位置转换国家名称?

Javascript React intl是否支持根据位置转换国家名称?,javascript,reactjs,react-redux,react-intl,Javascript,Reactjs,React Redux,React Intl,我正在尝试显示基于区域设置的国家名称列表。例如,假设我们有一个国家列表,如下所示: United States, China, Japan, and France. 你是浏览我网站的客户。如果您的帐户的区域设置为en_US,那么您应该会看到国家/地区列表的英文版本。但是,如果您的帐户的区域设置是ja_JP,您应该在列表的日文版本中看到该列表,依此类推 使用React intl可以吗?我试图动态地解决这个问题,而不是硬编码的翻译。 我搜索了很多,但没有找到解决方案。因为这些都是关于不需要特殊反应

我正在尝试显示基于区域设置的国家名称列表。例如,假设我们有一个国家列表,如下所示:

United States, China, Japan, and France.
你是浏览我网站的客户。如果您的帐户的区域设置为en_US,那么您应该会看到国家/地区列表的英文版本。但是,如果您的帐户的区域设置是ja_JP,您应该在列表的日文版本中看到该列表,依此类推

使用React intl可以吗?我试图动态地解决这个问题,而不是硬编码的翻译。
我搜索了很多,但没有找到解决方案。

因为这些都是关于不需要特殊反应库的数据。你可以只使用像这样的国家的数据。它是json格式的,具有以下模式(我剪切了一些字段,可以找到完整的示例):

请注意,尽管翻译部分使用
ISO 639-3
代码,标识部分使用
ISO 3166-1
代码,但您可以轻松地映射它们,因为母语部分使用
ISO 639-3
代码

假设您必须显示预定义国家的列表。您所要做的就是获取它们的
cca3
代码并将它们放入一个数组中。然后,当您以
ISO 639-3
格式(以下示例中为userLoc)标识您的用户区域设置时,您可以使用lodash或类似的库来获取相应的翻译:

// userLoc - current user locale in ISO 639-3
// codesToSelect - array of country codes in ISO 3166-1 you want to show

_.map( codesToSelect, ( cca3 ) => {

    let countryObject = _.find( countriesData, { 'cca3': cca3 } );

    let translatedName = ( countryObject && 
                           countryObject.translations && 
                           countryObject.translations[ userLoc ] )
        ? countryObject.translations[ userLoc ]
        : cca3

    return translatedName;
} )

请注意,可能没有指定国家/地区代码的翻译,因此cca3将用作备用方案。

我尝试使用react intl一段时间,我认为它非常有效。实际上,他们给出了一些值得尝试的函数示例

  • 复制回购协议。()
  • 在repo的根目录中运行npm安装或thread安装,这一步将安装一些将由示例使用的依赖项
  • 转到示例目录和翻译目录
  • 运行npm构建或纱线构建
  • 访问localhost:8080查看结果。您可以在en US和en UPPER之间切换LAGS
  • 所有这些语言集不是应用程序代码中的硬代码,而是以json格式单独保存在build/lang目录中。我想react intl可以解决你的问题

    // userLoc - current user locale in ISO 639-3
    // codesToSelect - array of country codes in ISO 3166-1 you want to show
    
    _.map( codesToSelect, ( cca3 ) => {
    
        let countryObject = _.find( countriesData, { 'cca3': cca3 } );
    
        let translatedName = ( countryObject && 
                               countryObject.translations && 
                               countryObject.translations[ userLoc ] )
            ? countryObject.translations[ userLoc ]
            : cca3
    
        return translatedName;
    } )