AWS Amplify I18n-如何获取当前设置的语言?

时间:2020-06-04 21:42:20

标签: internationalization aws-amplify

我正在尝试从I18n对象输出当前设置的语言,但似乎没有办法做到这一点。

如果有类似I18n.getCurrentLang()的东西,那很好,但是没有这样的东西,而我在源代码类中找不到任何东西。

谢谢!

1 个答案:

答案 0 :(得分:1)

它是错误或功能,库仅检查窗口导航器是否自动设置,在移动应用程序中它将取消定义

//class I18n 

    if (
        !this._lang &&
        typeof window !== 'undefined' &&
        window &&
        window.navigator
    ) {
        this._lang = window.navigator.language;
    } else {

    }

我使用自定义函数来确定。它将返回Amplify格式化的语言环境代码。

import { Platform, NativeModules } from 'react-native'

export default function getLocale() {
    let locale= 'en';
    try{
        locale = Platform.OS === 'ios'
            ? NativeModules.SettingsManager.settings.AppleLocale ||
            NativeModules.SettingsManager.settings.AppleLanguages[0] //iOS 13
            : NativeModules.I18nManager.localeIdentifier;
        //return format en_US
        locale = locale.split("_")[0];
    } catch (e) {
        console.error("Could not split locale. Falling back to en");
        locale = 'en';
    }
    return locale;
}