菜鸟教程小白 发表于 2022-12-12 10:16:57

iOS 应用程序 Localization.strings 文件名更改


                                            <p><p>IOS 应用程序通过 Localizable.strings 文件提供本地化支持。如果出于某些明显的原因我想更改文件名,我必须将该引用放在哪里。</p>

<p>谁能帮忙。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>iOS 本地化的工作原理:</p>

<p>如您所知,iOS 提供了一个很好的 API 来获取本地化的字符串,如下所示。</p>

<pre><code>NSString *stringValue = [ localizedStringForKey:key
                                                                   value:@&#34;&#34;
                                                                   table:nil];
</code></pre>

<p>并且它还提供了一个用于快速访问的宏:</p>

<pre><code>#define NSLocalizedString(key, comment) \
      [ localizedStringForKey:(key) value:@&#34;&#34; table:nil]
</code></pre>

<p>默认情况下,iOS 在 <strong>Localizable.strings</strong> 文件中查找字符串。然而,我们也可以为 iOS 提供一个自定义文件来查找字符串。这就是事情变得有趣的地方。</p>

<p>要提供自定义文件,我们可以按以下方式使用上述 API。</p>

<pre><code>NSString *localizedString = [ localizedStringForKey:key
                                                                   value:@&#34;&#34;
                                                                   table:@&#34;AnotherLocalizableStringsFile&#34;];
</code></pre>

<p><strong>table</strong> 参数采用字符串参数 <strong>AnotherLocalizableStringsFile</strong>,它是包含字符串的文件。</p>

<p>另一个有趣的参数是 <strong>value</strong> 参数,它接受一个字符串,如果找不到与给定键匹配的字符串,则应返回该字符串。</p>

<p>假设提供的 key <strong>不</strong>在文件中,下面的代码将返回<strong>无效 key </strong>。</p>

<pre><code>NSString *stringValue = [ localizedStringForKey:@&#34;Wrong_key_passed&#34;
                                                                   value:@&#34;Invalid Key&#34;
                                                                   table:@&#34;TargetLocalizable&#34;];
</code></pre>

<h2>解决方案:</h2>

<p>通过结合使用这两个有趣的参数,我们可以设计出一种方法来满足我们的要求。我们将要求 iOS 在目标特定字符串文件中查找特定于目标的字符串,并在加载所有目标通用的通用字符串时回退到 <strong>Localizablestrings</strong> 文件。</p>

<p>下面是这段代码的样子。</p>

<pre><code>NSString *stringValue = [ localizedStringForKey:@&#34;Key&#34;
                                                                   value:NSLocalizedString(@&#34;Key&#34;, nil)
                                                                   table:@&#34;TargetLocalizable&#34;];
</code></pre>

<p>因此,iOS 首先在给定的 <strong>TargetLocalizable</strong>.strings 文件中查找字符串。如果在那里找不到它,它将在基础 <strong>Localizable</strong>.strings 文件中搜索。</p>

<p>所以我所要做的就是将所有目标共有的所有字符串放在 <strong>Localizable</strong>.strings 文件中,并将特定于目标的附加和覆盖字符串放在 <strong>TargetLocalizable</strong> 中>.strings 文件。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iOS 应用程序 Localization.strings 文件名更改,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/35056397/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/35056397/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS 应用程序 Localization.strings 文件名更改