菜鸟教程小白 发表于 2022-12-12 10:56:44

ios - 跨多个目标本地化 iOS 应用程序


                                            <p><p>我的应用有几个目标。我正在尝试以不同的方式对它们进行本地化。在处理 Localizable.strings 文件和 NSLocalizedString 宏时,我发现这非常容易。为了让它工作,我只需为我正在使用的目标调整 Localizable.strings 文件的目标成员资格。所以我的项目文件结构看起来像:</p>

<ul>
<li>项目
<ul>
<li>目标1
<ul>
<li>zh.lproj
<ul>
<li>Localizable.strings</li>
</ul></li>
<li>it.lproj
<ul>
<li>Localizable.strings</li>
</ul></li>
</ul></li>
<li>目标2
<ul>
<li>zh.lproj
<ul>
<li>Localizable.strings</li>
</ul></li>
<li>it.lproj
<ul>
<li>Localizable.strings</li>
</ul></li>
</ul></li>
</ul></li>
</ul>

<p>现在我的项目有 2 个使用完全不同的英文翻译构建的目标。完美,这就是我想要的。</p>

<p>当我尝试对本地化 View 时生成的 *.strings 文件执行相同的操作时,我遇到了困难。我的部署目标是 6.0,我正在使用具有基本国际化的 Storyboard 。所以当我向我的项目结构添加一个 View 时,它看起来像:</p>

<ul>
<li>项目
<ul>
<li>目标1
<ul>
<li>Base.lproj
<ul>
<li>SomeStoryboard.storyboard</li>
</ul></li>
<li>zh.lproj
<ul>
<li>Localizable.strings</li>
<li>SomeStoryboard.strings</li>
</ul></li>
<li>it.lproj
<ul>
<li>Localizable.strings</li>
<li>SomeStoryboard.strings</li>
</ul></li>
</ul></li>
<li>目标2
<ul>
<li>zh.lproj
<ul>
<li>Localizable.strings</li>
<li>SomeStoryboard.strings</li>
</ul></li>
<li>it.lproj
<ul>
<li>Localizable.strings</li>
<li>SomeStoryboard.strings</li>
</ul></li>
</ul></li>
</ul></li>
</ul>

<p>我的目标是让每个目标都有不同的本地化,但保持相同的 BaseStoryboard。我还想避免这样的事情:将 target2Storyboard字符串文件命名为 REPLACEMENT_SomeStoryboard.string 之类的东西,然后编写一个脚本,为给定目标中名为此类的每个文件删除 SomeStoryboard.string 并将 REPLACEMENT_SomeStoryboard.string 重命名为 SomeStoryboard.string。</p>

<p><strong>尝试 #1</strong></p>

<p>所以我尝试做的是从 target2 成员资格中删除 target1 en.lproj/SomeStoryboard.strings 和 it.lproj/SomeStoryboard.strings。但这也从 target2 成员资格中删除了 Base.lproj/SomeStoryboard.storyboard。所以基本上成员资格被当作一个文件来管理,这是有道理的。</p>

<p><strong>尝试 #2</strong></p>

<p>我尝试的第二件事是将 target1 SomeStoryboard.storyboard 添加到 target2 的成员中,并创建一个 SomeStoryboard.strings 文件并将其添加到 target2 的成员中。我尝试将这个额外的字符串文件添加到复制捆绑资源阶段。我还尝试添加复制文件阶段(在复制捆绑资源阶段之后)。无论哪种方式,它似乎只是偶尔替换 target1 中的 SomeStoryboard.strings。所以最终的结果是,有时 target2 会从 target1 中获取本地化,有时会从 target2 中获取本地化。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>尝试使用 <a href="http://smoothlocalize.com/" rel="noreferrer noopener nofollow">http://smoothlocalize.com/</a> 中描述的方法(单击第一个主框中的第一个教程)。您下载一个小型库,允许您使用 Localizable.string 作为资源字符串,就像对 .m 文件一样。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 跨多个目标本地化 iOS 应用程序,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/16528220/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/16528220/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 跨多个目标本地化 iOS 应用程序