Android strings.xml中字符限制的用途是什么?

Android strings.xml中字符限制的用途是什么?,android,android-xml,Android,Android Xml,为什么有些Android项目会在strings.xml中每个字符串上方的注释中列出字符限制?例如,来自: 谷歌搜索还发现了其他一些例子,但没有解释。我不相信Android文档涵盖了这一点。与标签不同的是,它似乎不是Android的官方功能组件。我最好的猜测是,这是一些项目在翻译时用来表示的约定,请确保翻译的版本不超过X个字符,否则会破坏UI!或者,反之亦然,如果您正在使用此字符串,请确保UI在使用X个字符长的字符串时仍然看起来不错 我的想法是,考虑到不同长度的翻译,以及不同文本大小的可能性,UI

为什么有些Android项目会在strings.xml中每个字符串上方的注释中列出字符限制?例如,来自:

谷歌搜索还发现了其他一些例子,但没有解释。我不相信Android文档涵盖了这一点。与标签不同的是,它似乎不是Android的官方功能组件。我最好的猜测是,这是一些项目在翻译时用来表示的约定,请确保翻译的版本不超过X个字符,否则会破坏UI!或者,反之亦然,如果您正在使用此字符串,请确保UI在使用X个字符长的字符串时仍然看起来不错

我的想法是,考虑到不同长度的翻译,以及不同文本大小的可能性,UI应该始终构建为尽可能灵活。此外,译者还应努力使译文与原文大致相同,而不是在翻译时从10个字符变为50个字符。所以我认为这个字符限制是完全没有必要的,可以取消。我问,因为我正在修改一个使用这个的旧开源项目

我对CHAR_LIMIT的理解正确吗?或者它的用途是什么?应该使用它吗

翻译时,请确保翻译的版本不超过X个字符,否则会破坏用户界面!或者,反之亦然,如果您正在使用此字符串,请确保UI在使用X个字符长的字符串时仍然看起来不错

这就是我对它的理解

我四处搜索了一下这条线索的使用地点,只找到了一个地方:。这是一个lint脚本,似乎用于strings.xml文件。也许你正在谈论的项目使用了这个脚本?文件上说:

强制执行常见的Android字符串最佳实践。它忽略了皮棉 来自先前字符串文件的消息(如果提供)

用法:stringslint.py strings.xml 用法:stringslint.py strings.xml old_strings.xml

一般而言:

错误表示提交前必须修复的问题,并且仅在没有误报的情况下使用。 警告表示可能需要修复的问题,但由于存在误报风险,需要手动检查。 信息信号问题应根据最佳实践进行修复,例如提供注释以帮助翻译。 这就是你刚才说的。它是翻译人员的线索,但也可用于lint检查,因此语法易于解析

我还试图搜索解释如何翻译安卓系统的页面,希望能在某个地方提到字符限制。但是社区似乎无法提供他们自己的翻译,所以我没有发现这样的页面

注意,对于某些字符串资源,还有一个以相同方式声明的。它似乎与系统设置应用程序有关,但我只知道这些


编辑:我找到了另一个使用它的脚本:,虽然这次是字符限制。

听起来我的猜测是正确的-这个字符限制的东西是一个非常罕见的策略,具有非常边际的价值。。。我要尽可能地远离它。
<!-- [CHAR LIMIT=25] String for confirmation button to enable a feature gated by the battery saver warning-->
<string name="confirm_battery_saver">OK</string>
<!-- [CHAR_LIMIT=NONE] Battery saver: Feature description, with a "learn more" link. -->
<string name="battery_saver_description_with_learn_more">To extend battery life, Battery Saver:\n&#183;Turns on Dark theme\n&#183;Turns off or restricts background activity, some visual effects, and other features like \u201cHey Google\u201d\n\n<annotation id="url">Learn more</annotation></string>