2015年12月28日 星期一

Android 使用xliff 格式化字符串

Copy from http://ezfantasy.iteye.com/blog/1489273

Android 使用xliff 格式化字符串



Android資源字符串/res/values​​/string.xml中可以包含xliff的節點,Xliff是XML Localization Interchange File Format 的縮寫,中文名為XML本地化數據交換格式。

quote from wikipedia ( http://en.wikipedia.org/wiki/XLIFF ) :
"XLIFF  ( XML Localisation Interchange File Format ) is an  XML -based format created to standardize localization . XLIFF was standardized by  OASIS  in 2002. Its current specification is v1.2 [1]  released on Feb-1-2008.
The specification is aimed at the localization industry. It specifies elements and attributes to aid in localization.
XLIFF forms part of the Open Architecture for XML Authoring and Localization ( OAXAL ) reference architecture."

<xliff:g>標籤介紹:
屬性id可以隨便命名
屬性值舉例說明
%n$ms:代表輸出的是字符串,n代表是第幾個參數,設置m的值可以在輸出之前放置空格
%n$ md:代表輸出的是整數,n代表是第幾個參數,設置m的值可以在輸出之前放置空格,也可以設為0m,在輸出之前放置m個0
%n$mf:代表輸出的是浮點數,n代表是第幾個參數,設置m的值可以控制小數位數,如m=2.2時,輸出格式為00.00 

也可簡單寫成:
%d (表示整數)
%f (​​表示浮點數)
%s (表示字符串)

使用步驟舉例:
1.
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
2.
 <string name="test_xliff">小紅今年<xliff:g id="xxx">%d</xliff:g>歲了,上<xliff:g id="yyy">%s</xliff:g >年級!</string>
3. 
String test = String.format(getResources().getString(R.string.test_xliff), 7, "小學二");

輸出:
小紅今年7歲了,上小學二年級!