每个目标都有不同的故事板本地化

2024-01-11

我有一个有 3 个目标的项目。每个目标只需要支持一种语言,但每个目标的语言都不相同。 目前我有

  • 目标 1(西)
  • 目标 2(西)
  • 目标 3(点)

我的大部分字符串都在 Localized.strings 文件中,我只是为每个目标指定一个不同的文件。然而,我的故事板中有很多字符串。我的问题是,似乎不可能为每个目标创建不同的故事板本地化文件。如果我更改葡萄牙语文件的目标,则西班牙语文件的目标会自动更改。

一个可能的解决方案是为每个目标复制每个情节提要,但是随着目标数量的增长,这不会很好地扩展。我还可以在每个 ViewController 中使用 NSLocalizedString 修改所有文本,但这似乎很乏味且容易出错。

有更好的解决方案吗?


跨目标共享故事板

While 这个答案 https://stackoverflow.com/a/33749062/218152是首选方法,您可以分配不同的故事板本地化针对不同的目标,同时共享same跨越所有目标的故事板。

先决条件:

请按照以下说明进行操作这个答案 https://stackoverflow.com/a/33749062/218152.

Concept:

您想要拥有Main.storyboard在每个目标中,但有不同的Main.strings在每个目标中。此外,您不希望所有本地化在每个目标中都可用。

为了实现这一点,您必须操纵.lproj直接,仅使用文件检查器时隐藏的进程。

一步步:

  1. 按照以下步骤创建所有部件这个答案 https://stackoverflow.com/a/33749062/218152.
  2. 从任何目标中删除Main.storyboard。当然,选择删除参考保留故事板。
  3. 在 Finder 中,找到 Base.lproj。拖放Main.storyboard回到你的项目,并且select每个目标。
  4. In the File Inspector, ensure that the languages are not selected, and that you are still using Localizable Strings. enter image description here
  5. 再次在 Finder 中找到en.lproj, es.lproj, fr.lproj等。请注意,它们每个都包含一个版本Main.strings。将这些 .lproj(整个目录)拖回您的项目中。这次,做not选择任意目标
  6. One last time, in File inspector, associate each Main.strings to the desired target. Repeat for each .strings. enter image description here

结论

通过解耦.lproj来自.storyboard在项目导航器中,您可以自由关联文件和目标。

Demo:

在“设置”中语言设置为法语的设备上使用法语目标查看它的工作情况:


► 在以下位置找到此解决方案GitHub https://github.com/SwiftArchitect/SO-33694785以及其他详细信息快速食谱 http://swiftarchitect.com/recipes/#SO-33694785.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每个目标都有不同的故事板本地化 的相关文章

  • ios - 在哪里放置 s.static_framework = true

    我在 CocoaPods 中的级别为 0 当我使用pod install有一个错误说 The Pods App target has transitive dependencies that include static framework
  • iOS 电池监控 Swift

    我已将监控设置为启用 但模拟器和设备中的电池电量仍然为 1 UIDevice currentDevice batteryMonitoringEnabled true var level UIDevice currentDevice batt
  • AVCaptureSession 具有多个方向问题

    我正在尝试实现条形码扫描仪 我有一个 AVCaptureSession 它从 AVCaptureDevice 接收视频 我想支持所有方向 使用以下代码 当我运行应用程序时 纵向一切正常 然而 在横向方向上 视图会旋转 但视频输入不会旋转 所
  • 在 iOS 上使用 Web 服务的最佳方式?

    我想构建一个 iOS 应用程序 让您登录到网络服务 之后 应用程序将 当用户选择时 通过 https 发送登录名 密码以及请求的变量 例如 在请求 新闻更新 后 它将收到 XML 格式的请求信息 类似于
  • 为什么在授予用户权限时,UIUserNotificationType.None 在当前设置中返回 true?

    我正在编写一种方法来检查当前用户设置是否包含某些通知类型 当检查当前设置是否包含 UIUserNotificationsType None 时 无论授予权限还是拒绝权限 它都会返回 true 有谁知道这是为什么吗 func register
  • Parse.com 和 Facebook 登录,运行无限循环

    我将 Parse 和 Facebook iOS SDK 都更新到了最新版本 当我尝试使用 Facebook 登录时 我的应用程序崩溃了 从调试器中我可以看到它正在无限循环中调用 3 4 个方法 我的登录代码如下所示 void openSes
  • 如何防止Apple Watch进入睡眠状态?

    我们正在开发一个 Apple Watch 项目 但如果不被打扰 手表就会进入睡眠状态 有什么办法可以阻止它进入睡眠状态吗 据我所知和有关该主题的其他搜索 目前还没有api可通过编程方式启用或禁用 Apple Watch 的睡眠模式
  • 错误域=AVFoundationErrorDomain代码=-11814“无法记录”

    它不断给我错误 错误域 AVFoundationErrorDomain代码 11814 无法记录 我不确定问题是什么 我试图在拍照后计数器达到 1 时录制声音 static int counter counter will always b
  • 所需框架与静态库

    构建现代框架 https developer apple com videos play wwdc2014 416 says 每个应用程序都有自己的自定义框架副本 https stackoverflow com a 15262463 242
  • iOS 滚动视图允许滚动过去的内容

    我正在努力优化我的应用程序以适应横向和较小的屏幕 我主要使用滚动视图来实现这一点 在我的其中一个视图中 我有一个容器视图 当我在故事板中的设备之间切换时 这个容器视图看起来很完美 容器视图映射到具有滚动视图的视图控制器 该滚动视图的顶部 底
  • iOS 中的构建对象文件扩展名是什么?

    当我在项目中构建java对象类时 将创建带有 class扩展名的构建文件 并且人类不可读 快速构建文件怎么样 example car java gt build gt car class 构建后会是什么 car swift gt build
  • 进入前台后刷新数据

    更改默认设置后 我想在AppDelegate中进入前台时刷新myViewController的数据 我所做的是 AppDelegate m void applicationDidFinishLaunching UIApplication a
  • 关于窗口层次结构的警告

    我的调试器中出现这样的警告 这是什么意思 Warning Attempt to present
  • 个人帐户开发者之间的 Apple 开发/分发证书

    我一直在到处寻找有关处理证书的正确答案 想象一下以下帐户 Joe拥有个人 Apple 帐户 但他根本不会编码 他只是发布了该应用程序并将其称为自己的 Bob还有一个个人 Apple 帐户 Bob 是一位编码专家 Joe 付费让他开发他的第一
  • UICollectionView 拖放文件夹创建

    我正在使用 UICollectionView 创建 iOS 画廊应用程序 我希望用户能够拖放图像来重新排序图库并创建文件夹 类似于 iPhone 上的主屏幕 我发现了以下内容tutorial http nshint io blog 2015
  • 在现有 iOS 应用程序中集成 React-native(0.40.0) 后找不到 Yoga/Yoga.h 头文件

    在我的 Swift iOS 应用程序中集成 React Native 后 我无法构建 yoga Yoga h file cannot be found 我已经浏览了文档 查看了react native github页面 检查了类似问题的SO
  • 通过 Instruments 使用 UIAutomation 操作 iphone 时,什么是 UIATargetHasGoneAWOLException。

    我正在使用 UIAutomation 通过 Xcode 中的 Instruments 在 iPhone 上执行某些操作 但遇到了一个奇怪的异常 UIATargetHasGoneAWOLException 有人知道这个异常是什么意思吗 我发现
  • 分发内部业务 IOS 应用程序

    我遇到了 IOS 应用程序分发的一个令人困惑的部分 因此 我需要简单细分一下我的限制 即仅将我的应用程序分发给我的员工 同事或任何被视为 内部 的人 这是表明我不希望该应用程序出现在应用程序商店中的另一种方式 我的情况是我为几家公司开发 他
  • Swift 中的 UIAlert 自动消失?

    我有以下代码 Creates Alerts on screen for user func notifyUser title String message String gt Void let alert UIAlertController
  • IPV6 快速可达性

    我是 swift 和 xcode 的新手 并且我的应用程序因 IPV6 而被拒绝 性能 2 1 当我们执行以下操作时 您的应用程序会在运行 iOS 9 3 5 并连接到 IPv6 网络的 iPad 和 iPhone 上崩溃 具体来说 当我们

随机推荐