如何实时更改应用程序语言?

时间:2017-05-27 10:14:10

标签: ios swift localization

我正在开发一个以2种语言运行的应用程序,英语和波斯语(波斯语)。因此,用户可以选择他想要的语言,并以该语言显示应用程序。我该怎么办?

2 个答案:

答案 0 :(得分:0)

首先,您应该使用领域,魔法记录或API来存储用户选择的内容。然后你可以创建一个自己类型的本地化字符串handeler,通过一个数组包含2个字典1和英语,1个用波斯语,你的应用程序中的所有文本都将从正常的本地化中读取。

答案 1 :(得分:0)

取决于您想要实现的目标,有一种方法可能对您的案例有用,即:

  1. 声明一个全局变量,该变量应代表应用程序中当前使用的语言的键,称之为appLanguageKey字符串 - 例如 - :

    var appLanguageKey = "english"

  2. 创建一个数据存储区,用于存储每个术语所需的两种语言标题,它可能看起来像(包含):

    term_key term_english term_farsi

    greeting_key Hello Hoi

    bye_key Bye Doei

  3. 现在,如果您尝试这样做,可以获得所需的值:

    desiredTerm = "select term_\(appLanguageKey) where term_key = 'greeting_key'"
    

    将其视为伪代码,条件应与它类似。

    通过实现这样一个返回字符串的函数(我假设它是:getDesiredCaption(_ termKey: String) -> String在下面的代码片段中),你将能够为任何UI组件自动设置所需的标题,只需调用它在viewWillAppear方法中,视图控制器:

    override func viewWillAppear(_ animated: Bool) {
        .
        .
        .
    
        label.text = getDesiredCaption("greeting_key")
        // Since that 'appLanguageKey' global viriable is "english",
        // the output should be "Hello"
    
        .
        .
        .
    }
    

    更改应用语言所需要做的就是将appLanguageKey的值更改为"波斯语"。

    对于与国际化和本地化相关的其他方法,您可能需要检查this answer,它应该会影响应用以使其导航从右到左。

    希望这会有所帮助。