xliff字符串替换
- 属性值
- %n$ms (%s)
- 代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格
- 注意:
- m 设置为3只有1个空格,之后累加
- %n$md (%d)
- 代表输出的是整数,n代表是第几个参数,设置m的值可以在输出之前放置空格,也可以设为0m,在输出之前放置m个0
- %n$mf (%f)
- 代表输出的是浮点数,n代表是第几个参数,设置m的值可以控制小数位数,如m=2.2时,输出格式为00.00
- %n$ms (%s)
- 占位符
-
eg:
<string name="str_xx_day">%1$3s天</string> mTxtXxDay.setText(String.format(getString(R.string.str_xx_day),10+""));
-
- <xliff:g></xliff:g>标签
-
添加
在strings.xml中置顶添加: <?xml version="1.0" encoding="utf-8"?> 同时在<resources >节点中添加属性: xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"
-
eg:
在strings.xml中: <string name="test_xliff"> <xliff:g id="year">%1d</xliff:g>年<xliff:g id="month">%2s</xliff:g>月 </string> or <string name="test_xliff"> <xliff:g id="year">%d</xliff:g>年<xliff:g id="month">%s</xliff:g>月 </string> or <string name="test_xliff"> <xliff:g id="year">%1$3d</xliff:g>年<xliff:g id="month">%2$s</xliff:g>月 </string> 在.class中: mTxtXxDay.setText(String.format(getResources().getString(R.string.test_xliff), 2017, "二")); or mTxtXxDay.setText(getResources().getString(R.string.test_xliff, 2017, "二");
-
字符串拼接
-
自定义的key和values
<!DOCTYPE resources [ <!ENTITY year "2017"> ]> <string name="str_year">&year;年</string> mTxtXxDay.setText(getResources().getString(R.string.str_year);
转意符
-
空格
 
-
换行
\n
-
省略号
…
-
解决特殊符号报错问题
-
1、对特殊字符使用转义字符进行转义,添加转意符号 \
-
eg:
转义前: <string >I don't know.</string> 转义后: <string >I don\'t know.</string> <string >I don\'t know.</string>
-
-
2、增加一个属性:
-
eg:
<string formatted="false"></string>
-
-
3、用双引号将字符串全部圈住
-
eg:
<string >"I don't know."</string>
-
-
将字符串添加到strings.xml
- 整理
- 在layout文件中,选中需整理到string.xml中的字符串,同时按住Alt+Enter,
- 即可看到弹出选择的对话款,选择其中的“Extract string resource”
- 在Java文件中同上
- 新增
- 在Java文件中,直接写上R.string.xxx,然后按Alt+Enter,
- 即可看到弹出选择的对话款,选择其中的“Create string value resource 'xxx'”
- 遗漏在代码中的字符串查找
- 使用快捷键(Crtl+Shift+F)打开查找功能
- 在Text to find中输入正则表达式(^((?!(*|//)).)+[\u4e00-\u9fa5])
- 勾选Regular expression
- 点击Find
- 使用快捷键(Crtl+Shift+F)打开查找功能
国际化处理
-
当前语言判断
通过字符串直接判断本机使用语言
-
eg:
<string name="language_abbr">EN</string> <string name="language_abbr">PL</string> switch(getString(R.string.language_abbr)){ case "EN": break; case "PL": break; default: break; }
-
国际化语言常用字符串
- 时间:
- 小时
- h
- hr
- hrs
- hour
- 分钟
- min
- minute
- 秒
- s
- sec
- second
- 上午
- a.m.
- morning
- 下午
- p.m.
- afternoon
- 小时
- 星期:
- 星期一
- Mon.
- Monday
- 星期二
- Tues.
- Tuesday
- 星期三
- Wed.
- Wednesday
- 星期四
- Thur.
- Thurday
- 星期五
- Fri.
- Friday
- 星期六
- Sat.
- Saturday
- 星期天
- Sun.
- Sunday
- 星期一
- 月份:
- 一月份
- Jan.
- January
- 二月份
- Feb.
- February
- 三月份
- Mar.
- March
- 四月份
- Apr.
- April
- 五月份
- May
- 六月份
- Jun.
- June
- 七月份
- Jul.
- July
- 八月份
- Aug.
- August
- 九月份
- Sept.
- September
- 十月份
- Oct.
- October
- 十一月份
- Nov.
- November
- 十二月份
- Dec.
- December
- 一月份
- 时间: