问题标签 [genstrings]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4492 浏览

ios - 在 Swift 中使用 value 参数时,genstrings 窒息

我有一个基本的 Swift 文件Test.swift,其中包含

当我genstrings在这个文件上运行时,我收到了一个意外的警告

并且生成的Localizable.strings文件缺少条目"key 1"

但是,当我在文件中使用以下代码在 Objective-C 中执行等效操作时Test.m

genstrings命令按预期工作,我得到"key 1".

我究竟做错了什么?

0 投票
1 回答
4660 浏览

ios - 快速本地化:Genstrings

我正在尝试准备将我的应用程序传递给翻译人员进行本地化,但我遇到了一些问题。我将文件“Localizable.strings”添加到我的项目中,并检查了“使用基本国际化”。

但是,在 Xcode 中查看我的应用程序时,我看不到任何语言的任何“Base.lproj”或“en.lproj”或 .lproj 文件,但当我在 Finder 中打开我的应用程序时,我可以看到“en.lproj” ”和一个“es.lproj”文件夹。

我猜这可能是 genstrings 实用程序无法正常工作的原因。我的代码中有很多调用,例如self.navigationItem.title = NSLocalizedString(...),但是当我执行时genstrings *.swift,Localizable.strings 中没有任何变化,而且我仍然看不到任何 .lproj 文件夹。

0 投票
1 回答
1138 浏览

swift - 在 NSLocalizedString 中设置 tableName 参数时,genstrings 不起作用

对使用参数的每次调用都使用命令行时出现Bad entry in file错误genstringsNSLocalizedStringtableName

尝试生成本地化字符串时请参阅以下示例(来自Firefox-iOS

文件 ./StorageTests/TestSQLiteHistory.swift 中的错误条目(行 = 100):参数不是文字字符串。

文件 ./StorageTests/TestSQLiteHistory.swift 中的错误条目(行 = 101):参数不是文字字符串。

文件 ./StorageTests/TestSQLiteHistory.swift 中的错误条目(行 = 102):参数不是文字字符串。

文件 ./StorageTests/TestSQLiteHistory.swift 中的错误条目(行 = 103):参数不是文字字符串。参数不是文字字符串。

这是这些行的代码

当我搜索解决方案时,我发现了这个用于生成和合并本地化字符串的工具。它适用于这种情况,生成本地化字符串并将其合并到Localizable.strings,但在运行时应用程序不显示本地化标题,因为它尝试从名称Storage.strings不是来自的文件中加载本地化字符串Localizable.strings

是否有任何解决方案可以自动生成这些文件而不是手动生成?

0 投票
1 回答
1840 浏览

ios - 更改从情节提要中提取的生成密钥(对象 ID)以进行本地化?

我按下了Localize...故事板上的按钮来生成一个字符串文件,以便故事板可以本地化为其他语言。在一个对应于情节提要的字符串文件中,我看到如下内容:

我想知道是否可以将键字段更改为orz-58-mzb.text更有意义的内容,例如faq.answer.23.text它可以在其他平台(如 Android)中使用?我注意到在情节提要编辑器中,对象 ID 无法更改(见屏幕截图)。有没有其他方法可以更改密钥?

对象 ID 的 Xcode 截图

0 投票
1 回答
1457 浏览

ios - Localizable.strings 的字符编码,由 genstrings 生成

在我的“ViewController.swift”中,我有一个本地化字符串:

在终端中,为了生成“Localizable.strings”文件,我输入:

并得到以下结果:

输入时od -c Localizable.strings,我得到:

当我输入file Localizable.strings时,它说:

当我用“emacs”打开文件时,它不显示这些字符,当我输入时M-x describe-current-coding-system RET,它说:

所以,文件开头的这些八进制字符 \377 和 \376 看起来有点像 utf-16-le BOM,这就解释了为什么每个字符后跟一个 \0(UTF-16 比在这种情况下为 UTF-8)。

这是正常的/有用的/有害的吗?

此外,标准 *nix 工具 ( grep, sed, awk) 不能很好地处理 utf-16 文件:

另外,我编辑了 Localizable.strings 以替换"hello";"Hello";. 然后“SourceTree”(我的“git”客户端)无法显示差异,除非我这样做,正如我可以让 git 将 UTF-16 文件识别为文本吗?

Apple 的国际化和本地化指南说:

注意:如果 Xcode 警告您 Localizable.strings 文件似乎是 Unicode (UtF-16),您可以使用文件检查器将其转换为 Unicode (UTF-8)。

那么,我应该删除/忽略 BOM 吗?

似乎没有genstrings生成 UTF-8 文件的选项。

我应该转换文件吗?

0 投票
1 回答
1361 浏览

ios - 你如何在 Xcode 中访问 Genstrings?

我目前正在使用一个有助于在语言之间切换的 pod。部分安装过程如下:

我对 genstrings 不熟悉,也不知道作者指的是什么。我猜作者的意思是我的本地化字符串文件夹,但是当我在它上面运行一个终端时,我得到了这个错误:

知道这些说明是什么意思吗?

0 投票
0 回答
121 浏览

swift - 有没有人让字符串类型枚举与 genstrings 一起使用?

我正在尝试genstrings在我的项目中使用来输出本地化的字符串文件。当你有一个像这样表示的字符串时,它工作得很好而且很漂亮:

NSLocalizedString("My String", comment: "My String")

但是,我决定使用 String-typeenum来表示我的应用程序的字符串。这背后的原因是,如果应用程序需要更改副本,则在位置编辑字符串比通过整个项目切换字符串更容易。

我用于字符串的解决方案非常简单 - 如下所示:

然后,为了获取本地化字符串,我实现了以下扩展:

很简单,对吧?它工作正常,但是我在尝试使用时遇到了问题genstrings(我extractLocStrings也按照 Apple Developer Forums 上的建议尝试过) - 我遇到了这样的问题:

Bad entry in file .xxxx/MyViewController.swift (line = 1305): Argument is not a literal string.

这显然是因为genstrings似乎正在扫描未编译的文件。我在这里不是很有希望,但我想知道是否有人提出了解决方案?我想我不必每次需要更改副本时都在工作区搜索我的项目来更改字符串(我们的项目相当大)。

我将不胜感激任何帮助!提前致谢。

Ĵ

0 投票
1 回答
375 浏览

ios - 有没有办法让 `genstrings` 与 `LocalizedStringKey` 一起工作?

有没有办法让 Apple 的genstrings命令行工具识别从SwiftUILocalizedStringKey初始化程序定义的可本地化字符串键?

对于这个输入文件 ( testing-genstrings.swift): ...

...genstrings生成此输出:

您可以看到它识别通过NSLocalizedStringText的初始化程序 Text() 使用ExpressibleByStringInterpolation(TEST9_%@在示例中) 的初始化程序定义的键,但在使用 定义的所有键上都失败了LocalizedStringKey

0 投票
0 回答
37 浏览

bash - 如何修复 MacOS 12.2 中的 bsdthread_register 错误

我有一个实用程序,用于使用 genstrings 在一些子目录中提取本地化字符串,用于一个 Objective-C 项目,如下所示:

这曾经在 MacOS 11 中正常工作,但在我安装 MacOS 12.2 后停止工作。运行它时,我收到此错误:

SO上有一些类似的问题,例如建议将bash更改为zsh。当我这样做时, bsdthread_register 错误消失了,但是,然后我收到了这个错误:

好像 genstrings 在 zsh 下使用时不接受通配符?

关于如何解决这个问题的任何想法,最好使用 bash

提前致谢,