如何从 plist 文件中提取字符串进行翻译(本地化)?

2024-01-10

我需要准备用于翻译 iPhone 应用程序的字符串列表。 我已经从中提取了字符串使用 genstring 的 *.m 文件 and 使用 ibtool 从 XIB 文件中命令。

但我也有plist 文件中需要翻译大量文本(字符串字段类型包含在string标签)。 是否有一个不错的 bash 脚本/命令可以将这些字符串提取到平面 txt 文件中? 我可以审查和过滤它,这样我的翻译人员就可以使用不错的列表,但不能使用看起来很陌生的 XML 文件。


我制作了一个自定义 shell 脚本,尝试找出所需的值。然后您可以使用本地化.py http://www.stevestreeting.com/2010/05/18/os-x-localisation-incremental-genstrings-and-utf-8-files/脚本以修改的方式(见下文)自动创建翻译文件。 (换行符在某种程度上非常重要)如果有更多实体需要翻译,可以相应地修改shell脚本

#!/bin/bash

rm -f $2

sed -n 'N;/<key>Title<\/key>/{N;/<string>.*<\/string>/{s/.*<string>\(.*\)<\/string>.*/\/*     \1 *\/\
"\1" = "\1";\
/p;};}' $1 >> $2

sed -n 'N;/<key>FooterText<\/key>/{N;/<string>.*<\/string>/{s/.*<string>\(.*\)<\/string>.*/\/* \1 *\/\
\"\1" = "\1";\
/p;}
;}' $1 >> $2

sed -n 'N;/<key>Titles<\/key>/{N;/<array>/{:a
N;/<\/array>/!{
/<string>.*<\/string>/{s/.*<string>\(.*\)<\/string>.*/\/* \1 *\/\
\"\1" = "\1";\
/p;}
ba
;};};}' $1 >> $2

localize.py 脚本需要一些修改。所以我创建了一个小包 https://github.com/gamma/Localize包含源代码和 plist 文件的本地化程序。新脚本甚至支持重复项(这意味着它将踢掉它们)

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

如何从 plist 文件中提取字符串进行翻译(本地化)? 的相关文章

  • SDK 和 iOS 部署目标。

    我使用最新的 SDK 4 1 构建项目并设置 iOS 部署目标 3 0 如果我使用4 0 sdk的某些方法 我可以在真正的iPhone 3 0上运行我的项目吗 您只能在 OS 3 设备上运行您的项目 如果有条件地编码围绕您想要使用的 OS
  • iPhone Dev:从子控制器和 TabBar 中的另一个控制器重新加载表视图的数据

    我正在实现一个笔记管理器应用程序 它在 tabBar 中有一个 tableView 其中显示其笔记的主要信息 访问一个注释时 您可以编辑其属性 在 tabBar 的一个按钮中 您可以选择注释在 tableView 中的显示方式 我遇到的问题
  • 如何检测 UITableView 中某个单元格的双击?

    如何检测某个单元格上的双击UITableView i e 如果用户进行了一次触摸 我想执行一个操作 如果用户进行了两次触摸 我想执行另一个操作 我还需要知道进行触摸的索引路径 我怎样才能实现这个目标 Thanks 如果您不想创建子类UITa
  • 刷新单元格的 UITableView 队列

    我想知道如果调用 UITableView reloadData 时 UITableView 队列被刷新 是否有人可以回复我 我正在尝试这样做 但这对我没有帮助 有什么建议吗 如果你查看 UITableView 的头文件 你可以看到有一个名为
  • iPhone触摸形状或原始数据

    有人知道是否可以检测触摸形状吗 也许通过获取原始触摸屏数据 我在这里找到了这个问题 答案 如何获取原始触摸屏数据 https stackoverflow com questions 789737 iphone raw touchscreen
  • java本地时间格式不带年份

    我喜欢将本地时间格式格式化为不带年份的字符串 目前我可以显示包含年份的本地格式 java text DateFormat df java text DateFormat getDateInstance java text DateForma
  • iphone:使用 iOS 5 和 Xcode 4.2 提交应用程序? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个在
  • iPhone 中的 UIGlassButton

    有人使用 Glass Button 提交过申请吗 获得批准了吗 我正在尝试使用彩色圆形按钮 但不想使用这些技巧 如何在 iPhone 上设置按钮背景颜色 https stackoverflow com questions 372731 ho
  • Objective c:如何只删除目录下的所有文件但保留目录本身

    我发现下面的代码可以删除objective c中的文件 但我只想删除目录下的所有文件Caches并保留目录Caches itself 有人可以建议这样做的方法吗 Thanks NSFileManager filemgr filemgr NS
  • 使用 NSJSONSerialization 解析 JSON

    对此进行了太多讨论 但我不知道如何解决我的问题 这是我从 WorldWeatherOnline 获取的 JSON 数据 JSON 有效 但我不知道如何解析它 这是我的代码 后面是 JSON 请帮忙 NSError errorInfo NSD
  • 设置使用 iPhone 相机拍摄的图像的类型

    如果我们使用 iPhone 相机拍摄照片 图像将默认以 JPEG 格式保存 我想以其他格式 例如 PNG 保存捕获的图像 是否可以 当我们从应用程序调用 iPhone 相机时 是否可以通过代码执行此操作 我们可以设置捕获图片后必须保存的图像
  • 使用 Mono Touch 的 Iphone 键盘顶部带有完成按钮的工具栏?

    我需要使用 UIkeyboard type 数字键盘在工具栏上添加完成按钮 以便在单击完成按钮时退出键盘 我使用了输入附件视图 但它也添加到普通键盘 我需要在我有数字键盘的地方添加这个 例如 我有一个文本字段 它只需要我需要的数字 除了我不
  • iOS 上每个选项的带有图像的操作表

    有没有办法在 iOS 上将图像添加到操作表中 与苹果在应用程序商店或苹果音乐应用程序上所做的一样 我对苹果文档的基本搜索表明我没有在操作表中子类化或添加子视图 UIActionSheet 并非设计为子类化 也不应向其层次结构添加视图 苹果文
  • 如何等待 webViewDidFinishLoad 完成

    我有一个初始化 webView 的布尔条件 并在 webViewDidFinishLoad 中加载另一个委托 以便在完成完成后触发 但是 由于布尔值在条件 webViewDidFinishLoad 之前返回 因此页面永远不会完全加载 如何确
  • 从 Core Data、iOS 获取最后插入的项目

    有没有办法获取核心数据数据库中最后插入的项目 这将返回最后插入的对象 setFetchLimit 1 和 setFetchOffset 所有条目数 1
  • 如何将 Spotlight for Help 插入本地化的 macOS 应用程序?

    我正在 macOS 上使用 Swing GUI 框架实现 Java 应用程序 当使用system外观和感觉以及screen菜单栏 Swing 自动插入一个搜索栏 called 聚光灯寻求帮助 https developer apple co
  • 如何在ios中以编程方式添加水平间距和垂直间距?

    我在 ios 8 中创建了一个应用程序 因为我有 4 个可垂直使用的标签 它应该在某些条件下更改位置 所以我已禁用自动布局并以编程方式设置约束 现在的问题是 我可以设置水平和垂直位置 宽度和高度的约束 但我找不到任何方法来添加标签之间的水平
  • 通过 iPhone 连接到 AT&T 无线网络的谷歌静态地图无法工作 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 最近 当我的 iPhone 连接到 AT T 无线网络时 我在检索静态地图时遇到了问题 但是 当我连接到本地 WiFi 时工作正常 上周日停止工作了几
  • 为什么 GDB 调试器不断冻结 Xcode 4?

    这真是一个奇怪的错误 我正在开发一个使用相机源的 iPhone 项目 并通过 OpenGL 着色器运行它以对其应用效果 然而 每次我在代码中简单地创建一个新的 GLfloat 时 调试器都会在启动时冻结 我无法复制和粘贴文本 因为整个 XC
  • 应用未能及时恢复

    我在一个非常具体的场景中遇到 未能及时恢复 崩溃 我认为与看门狗相关 仅在从后台恢复时 并且仅在进入后台后在很短的时间内执行此操作 a最多几秒钟 这似乎是相关的崩溃日志 Incident Identifier E30F2238 5B15 4

随机推荐

  • 从一个组合框中选定的项目如何更改第二个组合框中的特定项目?

    Combobox1 有 3 个项目 西班牙 法国 英国 Combobox2 有 6 个项目 巴塞罗那 马德里 巴黎 马赛 伦敦 布里斯托尔 当从 Combobox1 西班牙 中选择一个项目时 它应该可用于 Combobox2 的特定项目 巴
  • 如何设置 HTTP 标头(用于缓存控制)?

    如何为我的网站启用浏览器缓存 我是否只是将cache control public 像这样放在我的标头中 我正在使用最新版本的 PHP 在最新版本的 XAMPP 上进行开发 要在 HTML 中使用缓存控制 您可以使用meta tag htt
  • 如何使用asp.net从文件夹中删除特定文件

    这是我的交易 我得到了一个名为 gridview1 的 datagridviewer 和一个 fileupload1 当我上传文件时 它会使用文件名和路径更新数据库中的 gridview1 和表 并将所述文件存储在文件夹 Mag 中 但现在
  • Bootstrap-Angular-ui 加载时模态

    我在用Bootstrap Angular UI 模态 http angular ui github io bootstrap modal对于我正在开发的网站 我用来打开模式的代码 modal open templateUrl home te
  • 缺少调试|项目的任何 CPU 构建配置,并在 Windows x64 上默认为调试|x86

    我最近刚刚在我的机器上重新安装了 Windows 7 x64 安装成功 整个操作系统没有出现任何问题 我认为 Windows 或 NET x64 存在配置问题 Symptoms 新项目的默认构建配置是调试 x86 这感觉不对 我正在运行 x
  • 测试 Google 应用内时退款测试购买

    我退款时遇到麻烦 当我登录发布商控制台时 它会显示我的购买和 取消整个订单 按钮 退款 按钮呈灰色 付款是使用测试帐户完成的 该应用程序尚未发布 我如何才能拿回我的钱 即使我通过测试帐户退款 Google 仍会向我收取 30 的费用吗 您必
  • 在MySql中使用空间函数查找两个坐标之间的距离的正确方法

    我正在尝试使用 Mysql 和 PostgresSQL 中的空间函数来计算两个位置之间的距离 我从谷歌获取了纬度和经度 详情如下 位置一 纬度 42 260223 经度 71 800010 位置二 纬度 42 245647 经度 71 80
  • 在 PyTorch 中加速 SVD

    我正在使用 Pytorch 为 CIFAR10 执行一些分类任务 对于每次迭代 我都必须对每个批次进行一些预处理 然后才能将其反馈给模型 以下是每个批次的预处理部分的代码 S torch zeros batch size C H W for
  • Python 定义迭代器类失败,并显示“iter() 返回了‘Fib’类型的非迭代器”

    我正在使用 python 2 7 和 ipython2 7 在 ipython 中我尝试过 class Fib object def init self max super Fib self init self max max def it
  • 在 Magento 中获取基本产品图像

    我想要得到baseMagento 中的产品图像可调整其大小并显示在购物车侧边栏中 不幸的是 echo this gt helper catalog image gt init product image gt resize 38 38 打印
  • MSIE 9 中的“GET”ting AngularJS 资源返回空数组

    Problem 当使用GET来自一个的请求 resource 仅在 Microsoft Internet Explorer 9 中 成功的响应是空数组 Tests 成功场景 使用 FF 或 Chrome GET请求返回开发环境和本地环境中的
  • 包装应用

    我们有一个 Windows 应用程序 我们使用 Wise 进行部署 最近我们改用InstallAware 虽然它有一些优点 但我们面临一些问题 有人可以推荐另一个部署和打包应用程序吗 我们是一家小公司 没有专门的人员进行打包等工作 我们的软
  • kubernetes 秘密在环境变量中有尾随空格

    我在 GKE 上运行的 Kubernetes 1 9 中创建了一个部署 该部署利用了放入环境变量中的机密 我使用 yaml 文件将机密上传到 GKE 其中机密经过 Base64 编码 我在容器中看到的是环境变量在那里 但值包含尾随空格 如果
  • 为什么 sockaddr_in 中需要零填充?

    我用谷歌搜索了一下 有些人说 与 struct sockaddr 保持相同的大小 但内核不会直接使用 sockaddr 对吗 使用时 内核会将其恢复到原来的样子 那么为什么需要零填充呢 struct sockaddr unsigned sh
  • 实体框架 - 无效的列名称“*_ID”

    我已将问题范围缩小到 Code First 和 Database First EF 之间的某个问题 但我不确定如何修复它 我会尽力说得清楚 但老实说 我自己也缺少一些理解 这是实体框架 4 4 我继承了一个使用实体框架的项目 但许多实际文件
  • Cloud Pub/Sub:即使注册域名后,HTTP URL 也未注册

    我有一个 Google Pub Sub 项目 并创建了一个主题和一个简单的订阅 但是 当指定推送的 URL 时 我不断收到以下错误 我已完成站点验证过程并在 API 和服务中注册了域 如中所述https cloud google com p
  • 为什么 PHP 将字母 E 的字符串转换为数字?

    为什么下面的语句会返回true 608E 4234 272E 3063 我也尝试过在字符串周围使用单引号 我可以让它评估的唯一方法false是通过使用 运算符而不是 我的猜测是 PHP 将其视为某种方程式 但这似乎有点奇怪 有人可以详细说明
  • 在Java中一次导入所有子包[重复]

    这个问题在这里已经有答案了 Java中是否可以一次性导入所有子包 据我所知 这在 C 中似乎是可能的 C 如何一次性导入命名空间 https stackoverflow com questions 4806986 c how to impo
  • ASP.NET Core Identity 中基于临时会话的声明

    在 ASP NET Core Identity 中添加声明非常简单 但我无法找到如何添加基于临时会话的声明 我的用例是这样的 具有自己的自定义声明的登录用户需要定期添加新声明 但仅限于当前会话 而不是持久化到数据库 当他们关闭浏览器或退出后
  • 如何从 plist 文件中提取字符串进行翻译(本地化)?

    我需要准备用于翻译 iPhone 应用程序的字符串列表 我已经从中提取了字符串使用 genstring 的 m 文件 and 使用 ibtool 从 XIB 文件中命令 但我也有plist 文件中需要翻译大量文本 字符串字段类型包含在str