android - 如何在 l10n-wise 中改变 Android 的布局 XML?

标签 android android-layout localization mozilla android-xml

您可能知道,Mozilla 旨在将 fennec 上的移动用户界面作为原生 Java/Android 用户界面。

这包括使用布局 XML 文件,默认情况下使用类似的东西

<TextView
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:text="@string/text_a"
    />

@string/text_astrings.xml 文件中解析为 text_a,执行 l10n。

我们想使用其他东西,我想知道我们是否/如何将其连接到 XML 文件中。

所以,我很想获得指向实际执行字符串查找的 android 源代码的指针。

关于如何连接一些自定义的东西,我有三个想法,这些想法没有经过事实核查,主要是因为我还没有设法找到执行这些操作的代码:

  1. @moz-l10n/text_a,使用 java 实现的服务返回该资源类型的值
  2. moz:l10n="text_a" 自定义属性将连接起来以对生成的小部件进行后处理
  3. 子类化我们想要使用我们的方案本地化的小部件,添加 (2)

我希望这里有人有好主意,可以为我指出好的路径或击落一些路径。

PS:如果没有关于 android l10n 方案好不好的 bike-shed,我将不胜感激。

最佳答案

So, I'd love to get pointers to android source code that actually does the string lookup, for one.

android.content.res.Resources 委托(delegate)给 android.content.res.AssetManagergetResourceText() 方法。这反过来又深入到 native loadResourceValue() 方法。从那里你只能靠自己了……:-)

1) @moz-l10n/text_a, with a java-implemented service giving back values for that resource type

除非您打算使用自己的构建工具预处理您的人造资源文件,将有效的 Android 资源文件生成到 res/ 目录中,否则您不能发明新的资源类型(例如,@moz-10n).这将需要修改构建工具和固件。

2) moz:l10n="text_a" custom attribute that would get hooked up to post process the generated widgets

3) subclass the widgets we want to localize with our scheme, adding 2)

您的选项 #3 绝对可行,并且在创建自定义小部件时非常典型。可以想象它的技术(通常涉及一个 res/values/attrs.xml 文件和一个 declare-styleable 资源)可以以某种方式应用于标准的小部件类,但我从未见过这样做。当然,您始终可以按照完成选项 #1 的方式进行预处理。

关于android - 如何在 l10n-wise 中改变 Android 的布局 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7843452/

相关文章:

android - Intent 过滤器甚至不会以编程方式注销

android - Firebase ML 套件是否支持 QR 码生成器?

java - 更改 ExpandableListView 中每一行的背景颜色?

java - 如何在 onCreate 方法之外初始化我的 RelativeLayoutButton?

android - 更改 MotionLayout 中嵌套布局的尺寸

ios - 从 Storyboard 中本地化属性化的 UITextView

django - 更改 Django 语言文件的最佳方法是什么

javascript - phonegap 使用 moveTo 重命名文件

android - 进度条显示

iOS 应用程序 Localization.strings 文件名更改