我可以更改 Apple Watch 模拟器语言吗?

Posted

技术标签:

【中文标题】我可以更改 Apple Watch 模拟器语言吗?【英文标题】:Can I change the Apple Watch simulator language? 【发布时间】:2015-12-05 10:05:51 【问题描述】:

是否可以更改 Apple Watch 模拟器区域设置?我想测试我的手表应用程序的本地化。我可以在 iPhone 模拟器上更改语言,但手表模拟器始终是英文的。我找不到任何语言设置:

【问题讨论】:

关于赏金的注意事项 - 仅在本地化模式下运行应用程序的解决方案很好。目前,即使这似乎也不可能。 您可以使用github.com/PGSSoft/AutoMate - 这是一个用于语言和位置自动化测试的库 @xenteros 除了它适用于 ios,而不是 watchOS... 使用 Xcode 10.1,这似乎可以在模拟 iPhone / iPad 上的 Watch 应用程序中实现。问题是它通常会告诉你手表没有连接。我设法为 Watch 设置了一次语言,但此后无法重现它。 @Koraktor,好消息,我们更进一步。 【参考方案1】:

当然不可能通过 Watch Simulator UI 或 iOS Simulator Watch 应用程序,但您可以从位于以下位置的 iOS Simulator 文件夹中复制值:

<simulator_dev_folder>/data/Library/Preferences/.GlobalPreferences.plist

到手表模拟器中的同一个文件。

要查找的 Plist 键:

AppleLocale AppleLanguages AppleKeyboards

【讨论】:

在 iOS 模拟器中,您可以在“设置”>“通用”>“语言和区域”>“iPhone 语言”中更改语言。与您在设备上执行此操作的方式相同。 我已更改 iOS sim 上的语言并尝试按照您的建议进行操作。我在 watchOS sim 中打开了.GlobalPreferences.plist,不幸的是,AppleLocaleAppleLanguages 键没有出现在那里。不管怎样,你的想法很棒。 不用担心,kelin,只需将它们从 iOS plist 复制到 Watch plist ;) 重新启动 Watch 模拟器后,将使用您新设置的值。 您是否测试过您的解决方案?因为我再试了一遍,把所有的key都复制到列表里了,重启后手表模拟器还是英文的。 您可能需要等待一段时间,直到 Watch sim 与相关的 iOS 模拟器完全同步。即使在那之后,这些值可能偶尔会被模拟器覆盖,但对我来说似乎相当稳定。【参考方案2】:

您无法更改 Apple Watch 模拟器区域设置,但可以更改 Watch 应用的区域设置。我用它来测试本地化。要更改您的应用程序区域设置,请编辑 Watch App Scheme:运行->选项->应用程序语言 - 选择语言并重新运行您的 Apple watch 应用程序。

【讨论】:

@kelin 你有没有让它工作?重新启动 Xcode 似乎对我不起作用。 @Jordan,很遗憾没有。 @ken 你运行的是什么版本的 Xcode?试图弄清楚为什么它对某些人有效,而对其他人无效。 @Jordan 我正在使用 XCode 7.3 正在运行 Version 11.2.1 (11B53),但它停止为我工作。我删除了所有模拟器并重新设置它们,但没有改变任何东西..【参考方案3】:

Run|Options|Application Language

不幸的是,它仅适用于 Xcode 7.2,不适用于 Xcode 7.1。没有其他已知的可能性。

编辑

有一个全新的语言和区域自动测试库。它被称为AutoMate。可以在here找到文档。

【讨论】:

不幸的是,我已经在运行 Xcode 7.3。除非那是您的意思而不是 7.1,否则它似乎不起作用。重启等似乎无法解决问题。还有什么我可以尝试的吗? 好的,澄清一下 - 你是说它在 7.2 中有效并且是 7.3 中的回归?只有在它确实有效的情况下才会投票:-) ...您发布的那个框架将无法正常工作。 watchOS 尚不支持 UITest。【参考方案4】:

我发表评论是为了更易读的格式。

希望这是一个“可行的”解决方法

创建不同的本地化文件:英语、法语、西班牙语、中文…… 在此处本地化所有元素 然后,打开英文文件 在当前英文文本之后复制您要测试的语言的内容(它将取代它)。 要返回英文,请删除此添加的外文文本。

我测试过,它有效。

我只是得到一个错误日志,没有明显的后果

Watch Extension[3520:334638] [default] -[SPRemoteInterface _interfaceControllerClientIDForControllerID:]:2140: ComF: clientIdentifier for interfaceControllerID:DC00003 not found

但这足以在模拟器上测试本地化。

删除多余的文本会清除错误。

【讨论】:

【参考方案5】:

我改进了这个答案。 https://***.com/a/54883097/2519218

    将目录更改为您的模拟器设备。例如。 /Users/$USER_NAME/Library/Developer/CoreSimulator/Devices 检测您的手表模拟器。我在构建后使用了ls -trl 命令。例如。 046D5EDA-1808-4BE2-A16E-04DF0324B032 plutil -convert xml1 ./046D5EDA-1808-4BE2-A16E-04DF0324B032/data/Library/Preferences/.GlobalPreferences.plist -o change_global.plist 编辑您希望 vim 使用的 change_global.plist AppLanguages 部分。我想用ja,所以就像<key>AppleLanguages</key> <array> <string>ja</string> </array>。 将 change_global.plist 放入 ./046D5EDA-1808-4BE2-A16E-04DF0324B032/data/Library/Preferences/.GlobalPreferences.plist。喜欢cp change_global.plist ./046D5EDA-1808-4BE2-A16E-04DF0324B032/data/Library/Preferences/.GlobalPreferences.plist。 重新启动模拟器。

【讨论】:

【参考方案6】:

很遗憾,您目前似乎无法更改手表模拟器中的语言。在设备上,它位于 iPhone Watch 应用程序中的 General -> Language & Region 下。但是,在 iPhone 模拟器上,甚至没有 General 部分的选项。这就是 Watch 应用下显示的全部内容:

【讨论】:

在当前模拟器中出现了该选项,但是当您尝试时显示“此设备未与此 Apple Watch 配对” 这可能是一种解决方法 - 创建所有本地化文件:英语、法语、... - 在英语文件中,在英文文本之后附加您要测试的语言的内容。 - 要返回英文,请删除此添加的外文文本。 Et voila,扭转了手表模拟器的关键失误!我测试了,它可以工作。只是得到一个错误日志,没有明显的后果 Watch Extension[3520:334638] [default] -[SPRemoteInterface _interfaceControllerClientIDForControllerID:]:2140: ComF: clientIdentifier for interfaceControllerID:DC00003 not found。删除多余的文本会清除错误。

以上是关于我可以更改 Apple Watch 模拟器语言吗?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 iOS 模拟器中运行我的 Apple Watch 应用程序

如何在 Watch Simulator 中测试 Apple Watch 可操作通知?

我们可以使用 Apple Watch 2.0 模拟器推数字表冠吗?

如何在 Apple Watch 模拟器中滚动 [关闭]

在模拟器中调试 Apple Watch 应用的 iOS 部分

Apple Watch 模拟器卡在 iOS 模拟器中加载