怎么能弯曲Android的布局XML l10n?

时间:2011-10-20 23:27:54

标签: android android-layout localization mozilla android-xml

您可能知道,Mozilla的目标是将fennec上的移动UI作为原生Java / Android UI。

这包括使用布局XML文件,默认情况下使用

之类的东西
<TextView
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:text="@string/text_a"
    />

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

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

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

我有三个关于如何连接自定义内容的想法,这些内容并未经过事实检查,主要是因为我还没有设法找到那些尚未完成的代码:

  1. @moz-l10n/text_a,使用java实现的服务返回该资源类型的值
  2. moz:l10n="text_a"自定义属性,可以连接到后处理生成的小部件
  3. 使用我们的方案对我们想要本地化的小部件进行子类化,添加(2)
  4. 我希望这里的人们有一个好主意,可以指出我的好路径或拍摄一些。

    PS:我很欣赏没有关于android l10n方案是否好的自行车棚。

1 个答案:

答案 0 :(得分:2)

  

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

android.content.res.Resources代表android.content.res.AssetManagergetResourceText()方法。这反过来又潜入了本地loadResourceValue()方法。从那里你自己......: - )

  

1)@ moz-l10n / text_a,使用java实现的服务返回该资源类型的值

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

  

2)moz:l10n =“text_a”自定义属性,可以连接到后处理生成的小部件

     

3)继承我们想要使用我们的方案本地化的小部件,添加2)

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