关于Android strings.xml-你应该了解的几个原则

移动开发 Android
如果你想为每个页面创建一个 strings.xml文件,可以这样命名:settings-strings.xml, profile-strings.xml。但是一个app通常有10到20个页面。所以每一个语言目录下都会有10到20个strings.xml文件,个人认为这带来的是混乱。

[[187865]]

不要试图重用

不同的页面不要重用一个string。

1.假设你的登录和注册页面都有一个加载对话框。因为都有加载界面所以你决定使用同一个string-R.string.loading。 

 

 

 

但是说不定什么时候你使用不同的string了,这时你就需要重新创建两个新的string,而且还要修改java代码。如果一开始你就使用两个string的话,你需要修改的就只有strings.xml文件。 

 

 

 

2. 你永远不知道你的应用要支持哪些语言。在某一种语言中-或许你可以在不同的上下文中使用同一个词语,但是在另一种语言中很可能不同的上下文需要不同的词语。 

 

 

  

 

 

 

注意这里英语版本的strings.xml中,R.string.download_file_yes 和 R.string.terms_of_use_yes两个string都是同一个单词- “Yes”。

但是在乌克兰语版本中R.string.download_file_yes用的是 “Гаразд”,而 R.string.terms_of_use_yes用的是“Так”。

分离

同一页面的string用前缀和注释分离 

 

 

 

为每个string添加页面前缀,帮助你立即识别出一个string属于哪个页面。

干净的strings.xml文件可以帮助你轻松维护与翻译成不同的语言-一个一个页面的来。

为每个页面创建单独的strings.xml 文件

如果你想为每个页面创建一个 strings.xml文件,可以这样命名:settings-strings.xml, profile-strings.xml。但是一个app通常有10到20个页面。所以每一个语言目录下都会有10到20个strings.xml文件,个人认为这带来的是混乱。

Format格式化

使用 Resources#getString(int id, Object… formatArgs) 来格式化 strings

永远不要使用+号来拼接字符串,因为不同的语言语序是不同的。 

 

 

  

 

 

 

正确的方式是使用Resources#getString(int id, Object… formatArgs)。 

 

 

  

 

 

  

 

 

 

复数

使用 Resources#getQuantityString (int id, int quantity) 来处理复数

永远不要在java代码中解决复数问题,因为不同语言中复数的语法规则是不同的。 

 

 

  

 

 

 

正确的方式是使用Resources#getQuantityString (int id, int quantity)。 

 

 

  

 

 

 

注:关于getQuantityString方法请看:Android Quantity Strings 的 getQuantityString方法取值问题

词语高亮显示

使用html文本来高亮静态词语

如果你想改变TextView中的某些单词的颜色- ForegroundColorSpan并不总是***选择,因为它的高亮是通过索引来完成的,而且在多语言下不安全。***在 strings.xml文件中使用html的font color标签。

假设你有一个“Discover and play games.” 的文本。你想让单词 “Discover” 和 “play” 显示成蓝色。 

责任编辑:庞桂玉 来源: Android开发中文站
相关推荐

2024-02-21 23:11:19

2020-04-28 18:20:04

Ubuntu 20.0UbuntuLinux

2018-08-23 08:21:54

TensorFlow机器学习人工智能

2013-09-17 09:35:15

云存储

2021-04-21 13:29:42

内存安全Java

2015-07-15 16:53:55

IP游戏基础知识

2018-03-22 16:32:49

大数据数据集数据处理

2023-12-28 16:33:57

2017-01-17 11:09:33

大数据关键词工具

2023-09-02 21:31:16

Java内存泄漏

2019-02-19 09:34:53

工业物联网IIOT物联网

2020-08-10 15:30:24

XDR网络安全网络威胁

2018-08-06 06:29:01

区块链区块链技术职业

2021-05-19 09:40:14

Android 12Android

2022-11-04 08:22:14

编译代码C语言

2021-09-16 21:22:15

Flutter系统

2019-07-11 08:54:24

Redis安全策略

2017-09-07 13:15:21

AndroidAndroid Stu技巧

2013-05-23 11:11:58

Sailfish OSJolla手机操作系统

2019-01-21 10:50:07

微服务架构开发
点赞
收藏

51CTO技术栈公众号