在 strings.xml 中使用 translatable = “ false”表示“在这里被翻译,但在缺省语言环境中没有找到”错误

这是我的 值 strings.xml(默认文件) ,一切都是不言而喻的: enter image description here

我的问题是:

  1. 如果我正在编辑默认语言环境(值 strings.xml) ,它怎么会“在默认语言环境中找不到”?
  2. 如果我设置 translatable="false",它怎么会是一个 lint 转换错误?在 value-pl strings.xml (以及 value-ru、 value-iw 文件夹)中,字符串甚至不存在吗?反正也不应该。
  3. 我似乎不明白为什么我没有得到俄罗斯字符串的错误。

(我将在这里显示 value-ru string.xml 或 value-pl string.xml,但这里没有什么有趣的内容,因为字符串无论如何都会丢失...)

48706 次浏览

这也发生在我身上

我做两件事:

  • 验证整个文件是否有其他翻译没有完成(我在文件 en 中有一个,但在 pt-br 中有一个)
  • 清理,更新梯级,退出并重新启动 Android Studio

我已经创建了一个工具来管理安卓应用程序的翻译状态。 它不仅告诉您其他语言中缺少哪些字符串,而且还可以报告并清除您在默认翻译文件中可能已经删除的剩余字符串。

Https://github.com/gubatron/android-missing-strings

要清理其他语言中的所有剩余部分,请执行以下操作

./ams --cleanleftovers -o all.txt

这将清除剩余的字符串,并将所有语言的丢失字符串报告输出到 all.txt 文件中

我有相同的错误消息,只是奇怪的问题,它被抛出在默认语言环境本身和所有的翻译。事实证明你不应该在你的名字中使用点(例如 name = “ bla.blub”) ,因为它会在内部被转换为“ bla _ blub”,然后它就不能与“ bla.blub”匹配,因此出现了错误。 我只需要在默认语言环境中将点更改为下划线,然后其他翻译中的所有其他错误(包括名称中的点)也都消失了。

但是请注意,其他构建工具仍然会产生问题,所以用下划线代替所有的点!

重建可能需要很长时间。 YMMV,但是..。

只需删除冒犯行并重新添加它。

对我有用,很快。

无效缓存/重新启动..。重新启动 android 工作室。这招对我很管用。实际上,这发生在我从另一台计算机复制文件并通过文件浏览器粘贴的时候。

只要确保对所有字符串文件都有相同的命名约定,包括相同的大小写。 假设在 strings.xml 中有“ sign _ in”,在 fr/string.xml 中有“ sign _ In”,那么在 fr/strings.xml 中就会出现错误,比如“在这里翻译,但在缺省语言环境中没有找到”。因此,当您编辑到“ sign _ in”时。错误将被删除。

您只需要复制违规行(或者只是多个违规行中的一个) ,删除它,然后重新粘贴它。为我解决了这个问题。

对我来说,这对我有所帮助:

  1. 选择导致错误的字符串。
  2. 砍断它们。
  3. 再贴一遍

如果它对您不起作用,请尝试将相同的字符串添加到 strings.xml(v21)文件。

退出 Android Studio 并重新启动它为我修复了它。

我通过以下步骤解决了这个问题:

  1. 清理我的项目

  2. 重建它

  3. 最后按下文件菜单中的无效缓存/重新启动

复制和粘贴对我不起作用。

我还尝试清理和重新启动,以前的错误已经消失,但新输入的字符串仍然有新的错误发生。

我尝试关闭打开的 Xml文件和 翻译编辑,然后重新启动。

Xml 文件和翻译编辑器

我同意。

对于 xml 文件中的所有字符串,我都遇到了这个问题。

问题是,您的默认 strings.xml不应该像其他翻译文件那样具有 tools:locale属性。如果是这样,无论何时我在发布模式下编译应用程序,它都会将其视为另一个已翻译的文件。

按双移位键打开 Translations Error,然后在 Untranslatable列中检查并取消检查有错误的项目。

在我的例子中,当报告的字符串的前一个字符串出现格式错误时,就会发生这种情况。遗憾的是,没有报告格式错误。纠正格式错误解决了这个问题。

如果你只是 Clean Project它可能工作。它为我工作。