<xliff:g>标签

简介: 转自:http://blog.csdn.net/huangyabin001/article/details/37651165摘要:这是Android4.3Mms源码中的strings.xml的一段代码:%1$smessages per conversation在这里google的工程师们使用了标签,这个标签主要在动态插入内容时候使用,有点类似于占位符的作用。

转自:http://blog.csdn.net/huangyabin001/article/details/37651165

摘要:

这是Android4.3Mms源码中的strings.xml的一段代码:

<!--Settings item desciption for integer auto-delete sms message limit -->

<string name="pref summary delete limit"><xliff:g id="count">%1$s</xliff:g>messages per conversation</String>

在这里google的工程师们使用了<xliff:g >标签,这个标签主要在动态插入内容时候使用,有点类似于占位符的作用。这里我们简单介绍一下<xliff:g>。

简介:

xliff是XML Localization Interchange File Format的缩写,也就是XML本地化数据交换格式的意思。配合string结点一起使用,用于动态设置某些值。

一,在strings.xml文件中定义的方法:

<string name="pref summary delete limit"><xliff:g id="count">%1$s</xliff:g>messages per conversation</String>

常用的属性:

id:当前xliff结点的唯一标识。

属性example表示举例说明,可选属性。

Java 语言的格式化输出使用示例:

   StringBuilder sb = new StringBuilder();
   // Send all output to the Appendable object sb
   Formatter formatter = new Formatter(sb, Locale.US);

   // Explicit argument indices may be used to re-order output.
   formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
   // -> " d  c  b  a"

   // Optional locale as the first argument can be used to get
   // locale-specific formatting of numbers.  The precision and width can be
   // given to round and align the value.
   formatter.format(Locale.FRANCE, "e = %+10.4f", Math.E);
   // -> "e =    +2,7183"

   // The '(' numeric flag may be used to format negative numbers with
   // parentheses rather than a minus sign.  Group separators are
   // automatically inserted.
   formatter.format("Amount gained or lost since last statement: $ %(,.2f",
                    balanceDelta);
   // -> "Amount gained or lost since last statement: $ (6,217.58)"

格式字符串语法:

产生格式化输出的每个方法都需要格式字符串 和参数列表。格式字符串是一个 String,它可以包含固定文本以及一个或多个嵌入的格式说明符。请考虑以下示例:

   Calendar c = ...;
   String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);
 
此格式字符串是 format 方法的第一个参数。它包含三个格式说明符 "%1$tm"、"%1$te" 和 "%1$tY",它们指出应该如何处理参数以及在文本的什么地方插入它们。格式字符串的其余部分是包括"Dukes Birthday: " 和其他任何空格或标点符号的固定文本。参数列表由传递给位于格式字符串之后的方法的所有参数组成。在上述示例中,参数列表的大小为 1,由对象Calendar c 组成。
  • 常规类型、字符类型和数值类型的格式说明符的语法如下:
       %[argument_index$][flags][width][.precision]conversion
     

    可选的 argument_index 是一个十进制整数,用于表明参数在参数列表中的位置。第一个参数由 "1$" 引用,第二个参数由 "2$" 引用,依此类推。

    可选 flags 是修改输出格式的字符集。有效标志集取决于转换类型。

    可选 width 是一个非负十进制整数,表明要向输出中写入的最少字符数。

    可选 precision 是一个非负十进制整数,通常用来限制字符数。特定行为取决于转换类型。

    所需 conversion 是一个表明应该如何格式化参数的字符。给定参数的有效转换集取决于参数的数据类型。

  • 用来表示日期和时间类型的格式说明符的语法如下:
       %[argument_index$][flags][width]conversion
     

    可选的 argument_indexflags 和 width 的定义同上。

    所需的 conversion 是一个由两字符组成的序列。第一个字符是 't' 或 'T'。第二个字符表明所使用的格式。这些字符类似于但不完全等同于那些由 GNUdate 和 POSIXstrftime(3c) 定义的字符。

  • 与参数不对应的格式说明符的语法如下:
       %[flags][width]conversion
     

    可选 flags 和 width 的定义同上。

    所需的 conversion 是一个表明要在输出中所插内容的字符。


二,在java代码中动态的方法:

getResources().getString(int id,Object...formatArgs);

下面贴出Android官方问当中相关的方法:

    public String getString(int id, Object... formatArgs) throws NotFoundException {
        String raw = getString(id);
        return String.format(mConfiguration.locale, raw, formatArgs);
    }

id:字符串资源ID;

formatArgs:将用于替换格式的参数;从return语句中可以看到,这里调用了String的format方法,jdk文档中给出的解释是格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。参数的数目是可变的,可以为 0。参数的最大数目受Java Virtual Machine Specification所定义的java数组最大维度的限制。有关null参数的行为依赖于转换。


目录
相关文章
|
12月前
|
Web App开发 前端开发 开发者
如何不移除&lt;p&gt;标签而将段落连接起来?
这是一个很经典的CSS布局问题,新人彻底理解了这个问题,HTML网页布局思想便已掌握了七七八八了。
85 0
|
前端开发
CSS之选择器(十)&lt;label&gt; 和 &lt;input&gt;
CSS之选择器(十)&lt;label&gt; 和 &lt;input&gt;
CSS之选择器(十)&lt;label&gt; 和 &lt;input&gt;
ng-repeat part2 - How &lt;li ng-repeat=&quot;nameF in Ionames&quot;&gt;{{nameF}}&lt;/li&gt; is parsed
ng-repeat part2 - How &lt;li ng-repeat=&quot;nameF in Ionames&quot;&gt;{{nameF}}&lt;/li&gt; is parsed
ng-repeat part2 - How &lt;li ng-repeat=&quot;nameF in Ionames&quot;&gt;{{nameF}}&lt;/li&gt; is parsed
|
JavaScript
用jquery删除table列表中&lt;u&gt;标签
//循环去掉a和u标签$("tbody a").each(function(){          var xx=$(this).find("u").
988 0
|
Java 索引 存储
JSTL 模板中 &lt;c:forEach&gt; 标签详解
详解 标签的语法定义如下所示。                                                 body content                                标签具有以下一些属性:l            var:迭代参数的名称。
1042 0
Dev GridView 绑定List&lt;T&gt;、BindingList &lt;T&gt;、BindingSource
作者:jiankunking 出处:http://blog.csdn.net/jiankunking         今天听到同事处理数据结构的时候特意处理为了 BindingList&lt;T&gt;,据说可以直接绑定到Dev GridView上,于是测试了一下: 1、在Dev GridView中新增三列,三列的FieldName分别对应与FormItem类对应:ItemKey、Name
2448 0
错误 1 Files 的值“&lt;&lt;&lt;&lt;&lt;&lt;&lt; .mine”无效。路径中具有非法字符。
Microsoft Visual Studio 2010项目编译的时候,提示如下错误: 错误 1 Files 的值“&lt;&lt;&lt;&lt;&lt;&lt;&lt; .mine”无效。路径中具有非法字符。 解决办法:在你的工程OBJ/DEBUG目录下,找到 工程名.csproj.FileListAbsolute.txt的文件打开并删除含有'&lt;&lt;&lt;&lt;&lt;&l
2250 0
HTML &lt;label&gt; 标签
定义和用法 标签为 input 元素定义标注(标记)。 label 元素不会向用户呈现任何特殊效果。不过,它为鼠标用户改进了可用性。
892 0