zoukankan      html  css  js  c++  java
  • iOS 国际本地化(对新项目集成和已有项目集成)

    第一推荐一篇金先生的博客,受益非浅,在这里真诚的感谢

     https://www.jianshu.com/p/7cb0fad6d06f金小白

    首先金小白先生把两种方式都做了介绍,第一种我就不在过多详细的讲解,主要针对已有项目所出现的问题给介绍一下

     总结两点就是:

    1. 在代码里用NSLocalizedString获取要本地化的字符串
    2. 用genstrings扫描代码文件,生成Localizable.strings,然后加到工程中。 

    那么如何具体操作呢,这里讲解一下。

    一,在代码里用NSLocalizedString获取要本地化的字符串

    正则搜索项目中所有的中文(首先,我们需要一个正则,去匹配工程中所有需要替换的文本。如果你不太了解正则,点我点我!!。)

    下面这个正则可以匹配到所有符合OC字符串格式的包含有中文的字符串。如果你用Swift,请去掉@。

    @"[^"]*[u4E00-u9FA5]+[^"
    ]*?"

    然后,重点来了。Command+Shift+F,进入全局搜索引擎,切换为Replace模式,并把匹配模式改为Regular Expression。

    在搜索条件里输入(@"[^"]*[u4E00-u9FA5]+[^" ]*?"),在下面替换内容里输入NSLocalizedString($0, nil)。此处正则表达式两边加括号的目的是为了能够在替换时用$1获取原有字符串的值,在替换时把原有值放入宏定义内key的位置。然后,搜索,可以看到搜索结果,点击Replace All,即可完成替换。

    箭头位置都是可选的,最后一个箭头,是选择工程,可以除去pod里的文件。 可以先替换一个试试效果

    二. 用genstrings扫描代码文件,生成Localizable.strings,然后加到工程中。 

    替换完了原有字符串,下面就是生成多语言文件了。作为一个文艺程序猿,我是不可能一处一处的把项目中的字符串挑出来再写到Localizable.strings文件里的。

    好在Xcode自带了一个命令行工具genstrings。我们可以利用这个工具生成所需的多语言文件。

    首先,我们需要先新建所需语言的文件夹。

    cd 工程目录
    mkdir en.lproj
    mkdir zh-Hans.lproj

    然后,遍历所有.m文件,根据每个文件内的需要国际化的字符串生成key和value。

    find . -name "*.m" | xargs genstrings -o en.lproj
    find . -name "*.m" | xargs genstrings -o zh-Hans.lproj

    此时,en.lprojzh-Hans.lproj文件夹中就应该有了相应的Localizable.string文件了。

    我们把这两个文件夹拖到工程里,然后在相应的Localizable.strings文件中,修改每个key所对应的value值就行了(这个应该是翻译干的事儿)。

    至此,项目的国际化已经适配完成。

    ⚠️ 这里重点说一下,有的童鞋总是出现这样那样的错误,不是不能写入就是文件不支持,这里你要把你的 lib/Tool/Supporting Files的文件夹先移出来放在根目录下, 把 en.lprojzh-Hans.lproj文件夹放在你的Controller模块,解析你Controller中的.m文件,然后再把en.lprojzh-Hans.lproj文件夹 拖到项目中。ok~~

  • 相关阅读:
    https://jwt.io/一个可以解析token的神奇网站
    .net core 发布IIS 出现Http 500错误
    C# Session 操作类
    大话IdentityServer4之使用 IdentityServer4 保护 ASP.NET Core 应用
    c# FTP操作类
    将字符串写入记事本
    记录一下自己在MVC项目中如何防CSRF攻击,直接上代码
    Asp.Net Core 开发之旅之NLog日志
    Asp.Net Core 开发之旅之.net core 连接数据库
    css为图片添加一层蒙版并在上层显示文字等
  • 原文地址:https://www.cnblogs.com/henusyj-1314/p/11662167.html
Copyright © 2011-2022 走看看