zoukankan      html  css  js  c++  java
  • iOS 本地化应用程序(NSLocalizedString)

    App本地化的需要不用讲大家也都明白,本文将介绍一种简单的方法来实现字符串的本地化。

    在不考虑本地化的情况下,我们如果在代码中给一个Button定义title,一般会这样写:

    复制代码
    btn.titleLable.text = @"Example Button";
    复制代码

     

    也许我们已经写了很长的代码才考虑到本地化的问题,大可不必头疼,这时候,我们要做的是把代码从头扫一遍,然后把每个会显示给用户看的字符串做如下修改:
    (对于内部使用的字符串就用不着本地化了)

    复制代码
    btn.titleLable.text = NSLocalizedString(@"btn_title", nil);
    复制代码

    NSLocalizedString是一个定义在NSBundle.h中的宏,其用途是寻找当前系统语言对应的Localizable.strings文件中的某个key的值。
    第一个参数是key的名字,第二个参数是对这个“键值对”的注释,在用genstrings工具生成Localizable.strings文件时会自动加上去。

     

    到目前为止,我们还没有生成Localizable.strings文件。这是一个逆向的过程,也就是先写好调用过程,再生成strings资源文件。

    当我们把所有的.m文件都修发好了,就该genstrings工具出场了。这时需要用到终端,对mac机的终端操作指令不太熟悉,查资料,了解了几个简单的。

    切换目录:后面需要建新的文件,新建的文件肯定要在我的项目底下,我们可以用finder找到自己的项目,可不知道路径,finder界面也没有显示,简单,在终端中输入下面指令就可以让finder的正上方显示路径了:

    defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES
    


    知道了路径,就可以切换到这个目录了,就是cd指令:

     

    cd /Users/gpm0-mac-mini/Documents/GAIADemo_1/GAIADemo
    



    1. 启动终端,进入工程所在目录。
    2. 新建两个目录,推荐放在资源目录下。
     目录名会作用到Localizable.strings文件对应的语言,不能写错了。这里zh-Hans指简体中文,注意不能用zh.lproj表示。zh-Hant表示繁体中文,en表示英语,ja表示日语。zh-CN  zh-TW 都可以用。这个名字千万不能搞错,要不然对应不到。

    复制代码
    mkdir zh-Hans.lproj
    mkdir en.lproj
    mkdir zh-Hant.lproj
    mkdir ja.lproj
    复制代码

    3. 生成Localizable.strings文件

    复制代码
    genstrings -o zh-Hans.lproj *.m
    genstrings -o en.lproj *.m
    genstrings -o zh-Hant.lproj *.m
    genstrings -o ja.lproj *.m
    复制代码

    -o <文件夹>,指定生成的Localizable.strings文件放置的目录。
    *.m,扫描所有的.m文件。这里支持的文件还包括.h, .java等。

    4. 右键点击工程的目录,选择“New Group”,可以新建一个文件夹,这个文件夹名字随便取。
    5. 在新建的group中添加刚刚生成的后缀为.lproj文件
    6. 最后在相对应的Localizable.strings文件中,修改每个key所对应的内容,就大功告成了。

     


  • 相关阅读:
    尚筹网11阿里云OSS对象存储
    阿里云的OSS对象存储
    尚筹网10用户登录
    尚筹网09用户注册
    尚筹网08环境搭建
    实体类的进一步划分
    尚筹网07分布式架构
    临时弹出一个QQ对话窗口
    Input框改placeholder中字体的颜色
    判断银行卡号的正则
  • 原文地址:https://www.cnblogs.com/riskyer/p/3263060.html
Copyright © 2011-2022 走看看