zoukankan      html  css  js  c++  java
  • iOS APP语言国际化之应用内切换语言环境

      最近接了一个项目,需求是要做一款应用的英文版本,客户并不清楚,以为要另做一个APP。沟通后告诉他们在之前应用基础上加个国际化功能就好,把之前的语言国际化重新梳理记录一下。

      一般设置更改本地语言环境后,需要重启应用才可以生效,客户那边是要求不能重启应用,必须是切换后立即生效。

      首先新建个工程:

      

      接下来要配置你想添加的国际化语言类型:

      

      对应有 XIB 或 Storyboard 文件也对应国际化:

      

      新建 String File,命名为 "InfoPlist" (必须是这个字符串,后缀.strings为默认自带的),用于配置应用名称等信息。

      

      

      选中 InfoPlist.strings 文件,点击 Xcode 右侧的 Localize 按钮,选择要国际化的语言。

      

      

      在里面可以对应用名称国际化:

      在 English 对应文件中添加:

    CFBundleDisplayName = "Internationalization";

      在 Chinese (Simplifierd) 添加:

    // Localizable App Name是App在中文环境环境下显示的名称
    CFBundleDisplayName = "国际化";

      这时切换系统语言环境,APP 名称就会对应更改。

      接下来是应用内容的国际化:

      新建 Localizable.strings,方法同上

      在对应的中文和英文文件中添加 需要国际化的内容

    "home" = "HomePage";
    "service" = "ServicePage";
    "account" = "AccountPage";
    "home" = "首页";
    "service" = "服务";
    "account" = "账户";

      在应用中使用 NSLocalizedString(@"home", nil)

    HomeViewController *homeVC = [[HomeViewController alloc] init];
    UINavigationController *homeNC = [[UINavigationController alloc] initWithRootViewController:homeVC];
    homeNC.tabBarItem.title = NSLocalizedString(@"home", nil);
        
    ServiceViewController *serviceVC = [[ServiceViewController alloc] init];
    UINavigationController *serviceNC = [[UINavigationController alloc] initWithRootViewController:serviceVC];
    serviceNC.tabBarItem.title = NSLocalizedString(@"service", nil);
        
    AccountViewController *accountVC = [[AccountViewController alloc] init];
    UINavigationController *accountNC = [[UINavigationController alloc] initWithRootViewController:accountVC];
    accountNC.tabBarItem.title = NSLocalizedString(@"account", nil);
        
    [self setViewControllers:@[homeNC, serviceNC, accountNC]];

      这时切换系统语言环境,就可以对应显示应用内容了。

      但是这种必须要重启应用才可以,如果不重启应用

      需要重新设置 窗口的 根视图:

      详细代码及效果参见 GitHub

      效果如下: 

      

     

      

  • 相关阅读:
    SVN库迁移整理方法----官方推荐方式
    SVN跨版本库迁移目录并保留提交日志
    微信公众号 发送图文消息
    Egret白鹭开发微信小游戏排行榜功能
    双滑动列表实现
    unity之资深工程师
    unity之高级工程师
    lua踩坑系列之浅拷贝与深拷贝
    lua之table.remove你不知道的坑
    unity之Layout Group居中显示
  • 原文地址:https://www.cnblogs.com/ZachRobin/p/7839011.html
Copyright © 2011-2022 走看看