问题 如何快速本地化故事板?


我正在尝试使用Swift 3和Xcode 8.1本地化我的应用程序。

我正在尝试使用storyboard(main.strings(德语))本地化应用程序并以编程方式使用 "NSLocalizedString"

我可以使用编程本地化 "NSLocalizedString" 使用以下代码

func localized(lang:String) ->String {

        let path = Bundle.main.path(forResource: lang, ofType: "lproj")
        let bundle = Bundle(path: path!)

        return NSLocalizedString(self, tableName:  nil, bundle: bundle!, value: "", comment: "")
    }

但我坚持使用故事板中定义的本地化。我在main.strings(德语)中定义了本地化字符串。

/* Class = “IBUILabel”; text = “Date :”; ObjectID = “0sh-CK-26C”; */
“0sh-CK-26C.text” = “Datum :”;

有没有办法在运行时本地化故事板?


8601
2017-12-16 14:42


起源



答案:


我认为,本地化故事板的最佳方法是 - 您应该首先使用本地语言完成设计工作,然后使用所需语言本地化您的故事板。然后导出.xliff文件并替换所需语言的所有文本。然后再次将.xliff文件导入到您的项目中。 你完成了......!


9
2017-12-19 05:37



谢谢..但我该如何动态更改故事板的语言(例如点击按钮) - sss
如果您想通过单击按钮来执行此操作,则只能从代码执行此操作。您无法动态更改故事板。如果要更改故事板,则必须重新启动应用程序。 - Krishna Datt Shukla
哦,明白了..请你分享如何在按钮点击时更改故事板的语言...考虑重新启动案例 - sss
当用户从按钮上的菜单更改语言时,只需更改NSUserDefault中关键“AppleLanguages”的值,并要求用户重新启动应用程序。例如:[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@“ru”,nil] forKey:@“AppleLanguages”]; [[NSUserDefaults standardUserDefaults] synchronize]; - Krishna Datt Shukla
谢谢..我们可以以编程方式重新启动应用程序吗? - sss


答案:


我认为,本地化故事板的最佳方法是 - 您应该首先使用本地语言完成设计工作,然后使用所需语言本地化您的故事板。然后导出.xliff文件并替换所需语言的所有文本。然后再次将.xliff文件导入到您的项目中。 你完成了......!


9
2017-12-19 05:37



谢谢..但我该如何动态更改故事板的语言(例如点击按钮) - sss
如果您想通过单击按钮来执行此操作,则只能从代码执行此操作。您无法动态更改故事板。如果要更改故事板,则必须重新启动应用程序。 - Krishna Datt Shukla
哦,明白了..请你分享如何在按钮点击时更改故事板的语言...考虑重新启动案例 - sss
当用户从按钮上的菜单更改语言时,只需更改NSUserDefault中关键“AppleLanguages”的值,并要求用户重新启动应用程序。例如:[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@“ru”,nil] forKey:@“AppleLanguages”]; [[NSUserDefaults standardUserDefaults] synchronize]; - Krishna Datt Shukla
谢谢..我们可以以编程方式重新启动应用程序吗? - sss