Android为了帮助开发者把应用更方便发布给全球不同语言的人们使用,建议开发者在进行开发时不要把UI呈现相关的文本内容硬编码,而是把内容写入到strings.xml中,这样做更加灵活,也更方便翻译成不同其他语言。下面通过一个案例来逐步介绍一下strings的用法。

基本用法

比如我想在我的应用页面上呈现一句话,叫“我想买一台Kindle”,那就可以在strings.xml中加入如下:

在需要使用该字符串的地方通过getString获得后使用。

添加参数

现在你觉得这句话把买Kindle的数量写死了,因为你在代码中不同地方都用到了这句话,但所买的Kindle数量不一样。strings资源让开发者可以自主在字符串的任何位置加上参数,比如要解决这个问题,可以:

在有参数的情况下可以通过如下方式传入:

如果你想在这句话中加入多个参数,比如想说:“我想买一台Kindle送给小明”,而送给谁可以自定,则可以如下表达:

注意在多个参数时,需要给参数加入位置信息,如上的%1$s。后面加上的参数会根据位置信息对应入号。具体做法如Java中的formatter方法

国际化

比如想把这句话翻译成英文,你可以新创建一个英文的Values resource file,如下图方式选择:


Android Studio中创建图示

翻译成如下:

从中可以发现Kindle这个词并没有翻译,Android中对无需翻译的词,我们可以用<xliff:g>标签来标注起来,这样我们把资源文件给他人或者使用Google Play自动翻译服务时,对方就知道该部分无需翻译。如下:

注意使用该标签时,先在资源之前加上命名空间:

xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"。

TIPS:Google play控制台提供APP TRANSLATION SERVICE的翻译服务

带数量判定的字符串

在翻译成英语后,发现问题来了,如果我想表示买了多台Kindle,但在英语语法中多台Kindle需要用复数形式Kindles,这要如何做呢?Android为这种情形提供了Plurals方法。

获得该plurals方法如下,第二参数传入quantity,系统会根据quantity来选择对应的显示,该方法后也可以加入参数:

中文部分可以改成:

加入特殊字符

有些字符是没有办法在strings.xml里面直接写的,比如"<",">",但可以用它对应的ASCII码来替代进行显示,比如要表达:我想买一台Kindle<$100>,则可以:

其中“<”的ASCII是&#060,“>”的是&#062。

由于附件上传及字数限制,部分图片、内容无法显示,全文详情请见:

http://mp.weixin.qq.com/s?__biz=MzI5ODI3NzY2MA==&mid=100000360&idx=2&sn=e06f8a063a619bb879eecd52420be2a9#rd

欢迎大家一起交流。

扫描以下二维码,获取更多更精美文章!(扫码关注有意向不到的惊喜的哦!!)

关注我们微信订阅号( uniguytech100) 与服务号(uniguytech),获取更多更精美文章!

也欢迎加入【大家技术网讨论QQ群】,群号码:256175955,请备注你个人的介绍!让我们一起聊聊it的那些事!

转载于:https://my.oschina.net/uniguy/blog/674472

你真的会用Android中Strings资源吗相关推荐

  1. android html 换行_Android中Strings资源加空格,换行符,@等方法示例

    Android中Strings资源添加空格,换行符,@等方法,或者替换符等,非常有用,如何在string资源文件里面加入空格,换行,tab等呢?请看如下: test                  ...

  2. Android中的资源访问

    Android中的资源是指非代码部分,指外部文件. assets中保存的一般是原生的文件,例如MP3文件,Android程序不能直接访问,必须通过AssetManager类以二进制流的形式来读取. r ...

  3. 修改Android中strings.xml文件, 动态改变数据

    有些朋友可能会动态的修改Android中strings.xml文件中的值,在这里给大家推荐一种简单的方法. strings.xml中节点是支持占位符的,如下所示: <string name=&q ...

  4. Android中的资源

    学习内容 Android中的各种资源 国际化及资源自适应 能力目标 了解Android中资源的种类 掌握Dimension资源.Assets资源的使用 掌握样式和主题资源的使用 熟练掌握国际化和屏幕适 ...

  5. android中的资源文件

    资源是你在代码中使用到的并且在编译时被打包进你的应用程序的附加文件.Android支持多种不同的文件,包括XML.PNG和JPEG文件.XML文件的格式决定于其描述的内容.这些文件将描述文件支持的类型 ...

  6. Android中String资源文件的format方法

    很多时候我们感性Google在设计 Android时遵守了大量 MVC 架构方式,可以让写公共代码.美工和具体逻辑开发人员独立出来.有关Android 的资源文件values/strings.xml中 ...

  7. Android中的资源复用小技巧

    前言 做了很多项目,发现每个项目里都有大量的相似图标,比如每个颜色一种.每个角度一种(左箭头.右箭头)等等,虽然这些图标很小占用不了太多资源.但是当我们需要change的时候就得一个个去替换,其实在a ...

  8. android中shape资源定义,Android中drawable使用Shape资源

    本文实例为大家分享了drawable使用Shape资源的具体内容,供大家参考,具体内容如下 1.画一条水平方向的虚线 android:shape="line" > andro ...

  9. android中shape资源定义,Android可绘制对象资源之shape和layer-list使用

    Code4Android.jpg 前言 文章中内容多来自谷歌官方文档详戳,一些示例代码详戳GitHub,不喜请轻喷. 可绘制对象资源 可绘制对象资源是一般概念,是指可在屏幕上绘制的图形,以及可以使用 ...

最新文章

  1. ClickHouse系列教程六:源码分析之Debug编译运行
  2. 全球富豪大洗牌!马斯克登顶世界首富,黄铮国内第三超马云
  3. diamond types are not supported at this language level
  4. 动手开发自己的第一个 composer 包
  5. linux 内核源代码漫游,Linux内核源代码漫游——
  6. 详解@EnableEurekaServer和@EnableDiscoveryClient 或 @EnableEurekaClient注解
  7. 第一阶段:Java基础之变量
  8. 经典C语言程序100例之九一
  9. SQLException:The server time zone value is unrecognized
  10. Secure DevOps!探真科技2022云原生安全产品发布会圆满落幕
  11. 程序员为什么要关注代码质量?
  12. 虚拟ONVIF 摄像机
  13. 京东支付SDK重构设计与实现
  14. 一条用来表示“思路非常乱。。。”的博客
  15. 聊聊我在腾讯和字节工作感受
  16. 阿里腾讯大裁员,中概股暴跌!没病千万别去互联网公司......
  17. 计算机在化学中论文3000字,化学论文范文3000字_化学论文发表
  18. 红帽子Linux7安装Oracle,RedHat Enterprise Linux7.0安装Oracle 12C
  19. 程序的本质之一程序编译的详细过程
  20. 小程序中实现用户的登录与注册

热门文章

  1. python中为程序添加小图标的方法
  2. ---文件上传与下载
  3. 搜狐镜像下载python源码
  4. 使MPDroid与基于Archphile的盒子一起使用
  5. 金三银四、金九银十 面试宝典 JAVASE八股文面试题 超级无敌全的面试题汇总(接近3万字的面试题,让你的JAVA语法基础无可挑剔)
  6. 一看就会Android之手机震动的设置
  7. C# WPF调用 QT窗口
  8. 非专业人士观点(1)性价比无法比
  9. U盘引导安装原版win10系统(.iso文件)
  10. 借AI之势,打破创意与想象的边界