在 iO 中手动加载不同的本地化笔尖

2024-01-11

我正在开发一个支持多语言的应用程序。 正如您所料,我有时会使用如下代码加载一些 nib 文件:

 self.currentController = [[newClass alloc] initWithNibName:@"CustomController" bundle:nil];

然后,应用程序将从其 languange 文件夹中加载相应的本地化 xib 版本。 现在,我想知道是否可以手动加载本地化的 nib 文件。 例如,不是简单地加载 CustomController,而是加载english / french / german / etc.自定义控制器的版本。

有什么方法可以实现这个目标吗?

提前谢谢你的帮助!

附:我知道这可能不是在 iphone/ipad 应用程序中更改语言的正确方法,但这不是我的决定

[稍后编辑]这看起来有点奇怪,就像一个黑客,但它似乎有效(加载德语笔尖):

NSString* path= [[NSBundle mainBundle] pathForResource:@"de" ofType:@"lproj"];  
NSBundle* languageBundle = [NSBundle bundleWithPath:path];
self.currentController = [[newClass alloc] initWithNibName:@"CustomController" bundle:languageBundle];

我在这里找到了提示:http://learning-ios.blogspot.com/2011/04/advance-localization-in-ios-apps.html http://learning-ios.blogspot.com/2011/04/advance-localization-in-ios-apps.html

但感觉并不完全正确,我想知道是否还有其他解决方案。 对于初学者来说,我感觉这会给旧版本的 iO 带来麻烦,因为语言文件夹有不同的命名约定


所以,就像我在编辑中所说的那样,这就是我找到的解决方案:

NSString* path= [[NSBundle mainBundle] pathForResource:@"de" ofType:@"lproj"]; 

NSBundle* languageBundle = [NSBundle bundleWithPath:path];

self.currentController = [[newClass alloc] initWithNibName:@"CustomController" bundle:languageBundle];

如果您需要将文本加载到本地化标签中

NSString* path= [[NSBundle mainBundle] pathForResource:[[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectAtIndex:0] ofType:@"lproj"];

NSBundle* languageBundle = [NSBundle bundleWithPath:path];

someLabel.text = [languageBundle localizedStringForKey:@"textKey" value:@"" table:nil];       

更多信息请点击这里:http://learning-ios.blogspot.com/2011/04/advance-localization-in-ios-apps.html http://learning-ios.blogspot.com/2011/04/advance-localization-in-ios-apps.html

对于相关人员来说,这种方法会带来很多问题。 对于初学者来说,这可能会影响每个人:您需要将本地化 xib 使用的所有资源也本地化。 如果我使用此方法加载新的本地化 xib,并且该 xib 包含常规非本地化图像,则在本地化之前它不会显示。 其他问题更加具体,并且与检索本地化数据的方式有关。

最后,我认为我不会使用它,因为对于当前的应用程序来说,它的问题太大,但将来可能会很方便。

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

在 iO 中手动加载不同的本地化笔尖 的相关文章

  • 在 Firebase 中值更改后删除观察者

    我在 ViewController 中有全局观察者 并且需要其中一些不同的观察者来获取特定值 如下所示 值改变一次后是否可以删除观察者 var ref Firebase url https
  • FIREBASE 数据库 - 存储子节点的唯一密钥(Swift/IOS)

    我正在尝试存储生成的独特的钥匙当 childByAutoId 被调用时 理论上 它将有助于映射稍后需要在我的应用程序中发生的指定子项的更新或更改 我对 Firebase 的分层数据库相当陌生 如果下面描述的方法不正确 请随时提供替代方案 我
  • UITableView/UITableViewCell 点击事件响应?

    我一直在谷歌搜索 试图弄清楚当点击 UITableView 中的一行 或单元格 时会调用什么类型的事件句柄 但一直无法弄清楚 我试图在点击单元格时更改其图像属性 Thanks 点击表行时有两个可能的事件 选择该行和附件视图 通常是 更多详细
  • UIAutomation 无法加载插件

    我设置了一个项目 其中一个目标在构建过程完成时启动 UIAutomation Instruments 是从 Python 脚本启动的 该脚本最终在 bash 上调用通常的 xcrun Instruments 命令 它工作了很长一段时间 没有
  • 在 iOS 视图中获取触摸位置时,PAN 手势崩溃

    我只是做了一个示例来检查平移手势 平移手势正在检测并且工作正常 但每当我在平移手势中给出第二个点时 例如CGPoint secondPoint sender locationOfTouch 1 inView self imageView 它
  • AVPlayer 无法从音乐库中播放

    我正在尝试使用 AVPlayer 播放 iPhone 音乐库中的歌曲 一切似乎都准备好了 但播放器根本不会发出任何声音 我已经为此苦苦挣扎了一段时间 任何帮助将不胜感激 注意 我意识到我可以使用 AVAudioPlayer 但我想直接从我的
  • 在 Swift 中从另一个 ViewController 访问变量

    我有以下内容ViewController class PageContentViewController UIViewController var pageIndex Int 我如何访问pageIndex来自另一个 ViewControll
  • XCode 卡住了“复制符号文件”

    更新到最新版本 6 1 b2 后 Xcode 不再在设备上编译和运行项目 并显示 正在复制符号文件 几个小时 对于这个问题有什么想法或可能的解决方法吗 尝试使用另一根电缆或 USB 端口 其他 USB 端口为我修复了它 并在找到此 Twit
  • 使用 DatePicker 展开和折叠 UITableViewCells

    我正在构建一个应用程序 让用户从 UITableView 中选择日期 tableView 是静态且分组的 我浏览了很多问题 包括this one https stackoverflow com questions 18973573 ios
  • 如何在应用程序未启动时调试推送通知?

    我想在我的应用程序未启动时处理 didFinishLaunchingWithOptions 方法中的远程推送通知 我在启动后杀死了它们 我该如何调试这种情况 您可以通过以下方式实现此目的 在项目的目标中选择编辑方案 然后更改此设置 Chan
  • iOS上数组的Swift Metal并行求和计算

    基于 Kametrixomanswer https stackoverflow com questions 38164634 compute sum of array values in parallel with metal swift
  • 是否可以在不使用 LibGDX 的情况下从 RoboVM 访问 OpenGL ES?

    是否可以从 RoboVM 访问 iOS 上的 OpenGL ES不使用 LibGDX 如果是的话 有什么有用的参考吗 我唯一能找到的是两年多前的这个超级简单的演示 http robovm com ios opengles in java o
  • 无法在 Crashlytics/fabric 中获取崩溃报告。显示错误:“看起来我们缺少 dSYM 来处理以下版本的崩溃。”

    我的 iOS 应用程序的 Fabric crashlytics 中未生成崩溃报告 Fabric 仪表板上显示错误 如屏幕截图所示 按照fabric的指示 我尝试从安装fabric mac应用程序的机器 我创建应用程序的版本 中搜索聚光灯下给
  • 在代码中创建时 UISearchDisplayController 不工作?

    我正在开发一个选项卡栏应用程序 其中一个选项卡有一个连接到 UISearchBar 的 UISearchDisplayController 所有这些都已连接到 NIB 中并且正在工作 当我点击搜索栏时 范围 和 取消 按钮会飞入等 并且搜索
  • UISearchBar 与 UISearchDisplayController 在屏幕外动画

    我有标准的 iPad 视图控制器 其顶部有一个自定义导航栏 在 xib 文件中 我添加了一个与视图右边缘对齐的 UISearchBar 搜索栏的宽度为 320 像素 我像这样初始化一个搜索显示控制器 Search display contr
  • 如何禁用 iOS 8 表情符号键盘?

    iOS 8 中是否有任何选项可以停止显示表情符号键盘 它在数字键盘和安全文本中不可用 但对于电子邮件来说它是存在的 如果无法禁用它如何从表情符号中获取字符串值 尝试这个 BOOL textField UITextField textFiel
  • 如何在 Objective C 中创建 2D NSArray 或 NSMutableArray?

    我想问一下客观C的问题 我想在 Objective C 中创建一个 2D NSArray 或 NSMutableArray 我该怎么办 数组中存储的对象是NSString 非常感谢你 这当然是可能的 但我认为值得注意的是 NSArray 只
  • 核心数据推导表达式关键路径使用运算符作为中间组件

    我正在尝试编写一对多关系属性之和的派生表达式 我有一个商品和一个组 该商品有价格和总价 金额 价格 我想编写一个表达式 将该组的总价格作为其组成部分的总和 当我构建时出现错误 错误 属性配置错误 LAEItemGroup totalPric
  • 将 Swift 闭包作为值添加到 Swift 字典中

    我想创建一个 Swift 字典 将 String 类型作为其键 将 Closures 作为其值 以下是我的代码 但它给了我错误 lvalue 与 String gt Void 不同 class CommandResolver private
  • 如何解决 Xcode 7 中的 No Type or Protocol Named 错误?

    我试图passing从第二个开始的值class我正在使用的头等舱protocol and delegate过程 每当我运行我的程序时 我都会遇到以下问题 No Type or Protocol Named locateMeDelegate

随机推荐