strings.xml中CHAR_LIMIT的作用是什么?

问题描述 投票:0回答:1

为什么有些Android项目在strings.xml中的每个字符串上方的注释中列出了 "CHAR_LIMIT"?例如,从 https:/android.googlesource.complatformframeworksbase+mastercoreresresvaluesstrings.xml。:

<!-- [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>

在谷歌上找到了一些其他的例子,但没有解释。我不相信安卓的文档会涉及到这个问题。而且,与诸如 <xliff:g> 它似乎并不是Android的官方功能组件。我最好的猜测是,这是一些项目用来表示 "当你翻译这个的时候,确保翻译版本的字符数不超过X,否则会破坏UI!"的惯例。或者,反之亦然,"如果你使用这个String,请确保UI的长度为X个字符的String仍然好看"

我的想法是,考虑到不同长度的翻译,以及不同文字大小的可能性,UI的构建应该始终保持合理的灵活性。同时,译者也应该努力使译文与原文的大小差不多,而不是在翻译时从比如10个字符变成50个字符。所以我认为这个 "CHAR_LIMIT "是完全没有必要的,可以放弃。我之所以这么问,是因为我正在摸索一个使用这个的老的开源项目)。

我对 "CHAR_LIMIT "的理解是否正确,或者说它有什么用,是否应该使用?

android android-xml
1个回答
1
投票

当你翻译这个的时候,请确保翻译的版本不要超过X个字符,否则会破坏UI!" 或者,反之亦然,"如果你使用这个String,请确保UI的长度为X个字符的String仍然好看

这就是我对它的理解。

我找了一下这个线索用在哪里,只找到一个地方。stringslint.. 这是个lint脚本,似乎是在 strings.xml 文件。也许你说的项目使用了这个脚本?文件文档中说。

执行常见的Android字符串最佳实践。 如果提供的话,它会忽略之前字符串文件中的lint信息。

使用方法 stringslint.py strings.xml 使用方法 stringslint.py strings.xml old_strings.xml

一般情况下

  • 错误是提交前必须解决的问题,只在没有误报的情况下使用。
  • 警告信号是可能需要修复的问题,但由于有假阳性的风险,需要人工检查。
  • 信息标志着应该修复以符合最佳实践的问题,例如提供注释以帮助翻译。

所以,这就顺着你刚才说的。这对翻译人员来说是一条线索,但也可以用于lint检查,因此语法容易被解析。

我也试着搜索了解释如何翻译Android系统的页面,希望能找到 CHAR LIMIT 会在某个地方被提及。但是社区好像不能贡献自己的翻译,所以我没有找到这样的页面。

请注意,这里也有一个 BACKUP_MESSAGE_ID 以同样的方式声明一些字符串资源。它似乎与系统设置应用有关,但我不知道更多的,比。

EDIT: 我发现了另一个使用它的脚本。https:/chromium.googlesource.comchromiumsrc+mastertoolsgritgrittoolandroid2grd.py., 虽然这次是 CHAR-LIMIT.

© www.soinside.com 2019 - 2024. All rights reserved.