热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Xcode6,iOS8,Storyboards和xliff的Sane本地化工作流程?

如何解决《使用Xcode6,iOS8,Storyboards和xliff的Sane本地化工作流程?》经验,为你挑选了1个好方法。

理想情况下,这是我想做的事情:

    使用英语基础本地化在Xcode中设置项目.最终我想要英语,让我们说我Localizable.strings和故事板的荷兰语版本

    在代码中外部化字符串NSLocalizedString,使用表单的键fooViewController.barLabel,勤奋并为每个键添加适当的上下文注释

    将荷兰语本地化添加到我的Storyboard文件中

    将Storyboard中的特定标签标记为将在运行时设置且不需要翻译的占位符

    添加注释在故事板哪些标签需要翻译

    导出"开发语言" xliff文件(单击"项目","编辑/导出以进行本地化...",选择"仅限开发语言")

    使用Counterparts或Xliffiexliff等工具打开英文文件,甚至可以使用基于Web的工具

    fooViewController.barLabel键旁边添加实际的英语翻译,然后重新保存en.xliff

    nl.xliff从原始文件创建文件en.xliff并添加荷兰语翻译

    将这两个xliff文件导入Xcode,并.strings为代码中定义的键和Storyboard中的键创建适用于荷兰语和英语的文件; 将新.strings文件提交到我的源存储库

    在我的源和故事板中添加,删除和更改密钥之后的某个未来点,en.xliff再次导出"开发语言" 作为事实的来源

    使用当前翻译更新en.xliffnl.xliff文件,使用工具突出显示添加或删除了哪些键

    将这些xliff文件导回Xcode,.strings然后更新文件,然后我可以将其检入我的源存储库

这有意义吗?想要这样做是否合理?我想是这样,但它不起作用.

以下是我遇到的问题:

Xcode不支持第4步 - xliff格式可以将键标记为translate=no,但是没有办法在Xcode中注释(理想情况下,Xcode根本不会导出标记为占位符的键.)

Xcode不支持第5步 - 无法为标签设置翻译注释.甚至没有办法设置密钥独立于您放置在Storyboard标签上的占位符文本,如果您在布局视图时发现Lorem Ipsum的填充标签很有用,那将是一个巨大的痛苦.

当你进入第10步时,Xcode会抱怨en.xliff文件中没有指定目标语言.有一种方法可以EN在Counterparts中更改目标语言(或者至少创建一个目标语言设置为的新文件)但是我找不到任何方法来使用Xliffie.

在尝试en.xliff使用更新的密钥重新导出文件时,Xcode告诉我"Localization failed reading "[...]/Supporting Files/en.lproj/Localizable.strings, Please address the issue at file location 782"我找到了哪个字符位置...撇号.xliff如果源.strings文件包含撇号,Xcode无法导出文件.什么在实际F ...?!

第12步和第13步变得奇怪,我只是不明白发生了什么.对口部门和Xliffie都用fooViewController.barLabel英文翻译替换了原来的钥匙,看起来他们试图告诉我我没有英文翻译.在尝试将en.xliff背面导入Xcode时,它告诉我除了新密钥之外我没有翻译,当我继续时,它擦除了en.lproj/Localization.strings文件中的现有翻译.

这是一团糟.

在Storyboards中翻译标签而无法手动设置密钥,添加翻译者评论或标记特定标签,因为占位符非翻译不起作用.我们已经使出浑身标签连接到@IBOutlet并设置其翻译viewDidLoad()NSLocalizedString.

Xcode在尝试导出.strings包含撇号乞丐信仰的文件时会出现窒息.

似乎还有一个潜在的假设,即如果Xcode中的"开发语言"是英语,那么开发人员负责英语翻译.我可以想象在单人独立开发商店之外的情况不是这样的.

最后,我似乎也错过了一些关于我试图使用的工具如何构建其工作流程的内容.如果有人能够启发我,我会非常感激.

有没有人设法构建一个可行的本地化工作流程,开发人员不负责对"开发语言"的最终编辑控制,并且.strings检查到存储库的文件是真相的来源?



1> Pavel Zdenek..:

我们已经将每个标签连接到@IBOutlet并使用NSLocalizedString在viewDidLoad()中设置其转换.

你这样做是对的.认真.围绕它展开你的开发过程,你会比试图采用Storyboard本地化演变成的混乱更好.

它解决了第4节 - 你决定放入什么 Localizable.strings

它解决了pt.5 - 默认情况下会有注释,因为您决定可以进行本地化.说实话,XCode7增加了向资源添加注释的可能性.不要使用它.出于某些原因,只有Apple知道,它不适用于所有类型的资源.您无法注释例如表格页眉和页脚.稍后会详细介绍.

我建议制作你自己的NSBundle.localizedStringForKey包装器(宏)提供value.NSLocalizedString设置value为空字符串,基本上强制key用作后备翻译内容.所有已经存在可疑的宏,NSLocalizedStringWithDefaultValue采用的value也是所有其他4点需要的参数-不是你想经常使用.

第10步是由您尝试导入Base本地化引起的 - 事实上它的英语没有任何区别.如果您想"翻译英语"(即专业修正),您必须将英语作为另一个独立本地化添加到Base之上.从技术上讲,它归结为基础xliff缺失属性.由于一些奇怪的xliff混乱与你的相似,我不得不手动添加一次.你不想那样做:)

撇号故障:iOS本地化是一个奇迹般的虚幻花园,但我确信这不是不真实的:)尝试在一些十六进制显示编辑器中打开文件 - XCode呈现的内容可能与文件真正包含的内容完全不同.

    ......甚至基于网络的东西

这对我们来说是克罗丁,很好地说明了苹果公司故事板本地化的想法.翻译人员需要3件事来专业地开展工作:背景,背景和背景.Apple似乎认为翻译人员很乐意安装应用程序,玩它并提出问题以获取上下文.因为,默认情况下,xliff导出中没有人工上下文.现在使用Xcode7,您可以添加注释,但奇怪的是并非随处可见.即使你可以,你的笔记也会在已经很久的时候附上带有机器上下文的字符串 - 可以理解为故事板导入匹配所需,但对翻译者来说是无用的和阻碍的.此外,实际上,翻译是专业机构或语言爱好者.即使你有适当装备的爱好者的运气,或者你为获得额外的客户服务支付了代理费,你也可以进入The Hostile Desert Of Beta分销选项.苹果公司有趣的Testflight轮回将需要翻译人员注册为Apple开发人员,或等待Apple的beta审查 - 取决于您需要翻译的应用程序生命的早期.

顺便说一下,我喜欢你的博客.有时我觉得自己也会倾倒我的酸涩和疲惫的疲惫,但从来没有像你一样:)


推荐阅读
  • iOS推送手机消息的技术背后的奥秘揭示
    作者:allenzzhao,腾讯IEG运营开发工程师消息推送我们几乎每天都会用到,但你知道iOS中的消息推送是如何实现的吗?本文将从推送权限申请,到本地和远程消息推送, ... [详细]
  • imnewtotheswiftandxcodeworld,soimhavingaproblemtryingtointegrateapackagetomypro ... [详细]
  • Annotation的大材小用
    为什么80%的码农都做不了架构师?最近在开发一些通用的excel数据导入的功能,由于涉及到导入的模块很多,所以开发了一个比较通用的e ... [详细]
  • Xcode离线安装帮助文档1.在线查看帮助文件:Xcode下查看帮助文件,菜单Help-DeveloperDocumentation在右上角搜索框中即可检索,但速度很慢 ... [详细]
  • iOS开发Debug和Release的理解
    2019独角兽企业重金招聘Python工程师标准参考:http:blog.csdn.netmad1989articledetails406580331&# ... [详细]
  • 在应用开发中少不了界面元素的布局、适配、自适应。之前苹果已经为我们提供了 AutoLayout 和 SizeClasses,方便我们实现页面的自适应弹性布局。但对于一些复杂的交互界 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • OCI连接MySQL_PLSQL Developer连接远程数据库OCI客户端安装方法
    本文介绍了使用OCI客户端连接MySQL和PLSQL Developer连接远程数据库的安装方法,避免了在本地安装Oracle数据库或类似的开发套件的麻烦,同时解决了PLSQL Dev连接远程Oracle时的配置问题。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • UMTS基础知识汇总
    协议框架23G接口UMTS实体EntityNameDescriptionAuCAuthenticationCenterCBCCellBroadcastCenterC-RNCCon ... [详细]
author-avatar
jimmychoong_959
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有