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一段时间,我认为它非常有效。实际上,他们给出了一些值得尝试的函数示例
// 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;
} )