1、字符串本地化如何工作 默认情况下,Android将英语作为主要语言并加载string资源从res⇒values⇒strings.xml。...例如,如果你想添加支持法国,你应该创建一个文件夹命名值values-FR和保持strings.xml文件的所有字符串翻译成法语了。...所以它是强制性的,默认的stings.xml文件应该包含所有的字符串值给应用程序使用,以防止其他语言的strings丢失字符串。 正确的做法: 在支持多种语言时,在定义字符串时应该考虑下面的做法。...: 不要硬编码在Java代码或xml中,这样对多语言支持是困难的。...你的项目看起来应该像这样一旦你创建所需的文件/文件夹。 ? 多语言支持.png 翻译为现在的字符串的语言和他们在适当的地方的strings.xml文件。
\n 2.Strings.xml > Excel 现在已经整理好了strings.xml文件,下一步就是让专业的翻译人员翻译对应的语言。...其实直接提供strings.xml文件就可以了,但是这样不容易进行去重、统计、整理,一般整理出excel文档比较合适。...3.Excel > Strings.xml 得到翻译好的的excel文档之后 依旧可以借助excel的拼接功能,在D1输入拼接语句=""&C1&..."",可以生成符合strings.xml中格式要求的内容 下拉统一格式,所有的都可以自动拼接 最后在项目中的res目录下创建各自的资源文件夹,右击res文件夹 > New > Android...中英文之间的翻译存在长度的不确定性,有时会出现换行的现象。从翻译的角度来看,可以让翻译团队根据所属界面的特殊性来重新翻译,尽量控制在一定字符以内。
Android为了帮助开发者把应用更方便发布给全球不同语言的人们使用,建议开发者在进行开发时不要把UI呈现相关的文本内容硬编码,而是把内容写入到strings.xml中,这样做更加灵活,也更方便翻译成不同其他语言...基本用法 比如我想在我的应用页面上呈现一句话,叫“我想买一台Kindle”,那就可以在strings.xml中加入如下: 我想买一台Kindle</string...strings资源让开发者可以自主在字符串的任何位置加上参数,比如要解决这个问题,可以: 一 ...,比如想说:“我想买一台Kindle送给小明”,而送给谁可以自定,则可以如下表达。...,我们可以用标签来标注起来,这样我们把资源文件给他人或者使用Google Play自动翻译服务时,对方就知道该部分无需翻译。
Android提供了一套很方便的进行资源(语言)国际化机制,为了更好地支持多语言,很多工程的翻译往往会放到类似crowdin这样的平台上。资源是全了,但是还是会有一些问题。...哪些问题 以下使用一些语言进行举例。其中values为工程默认的资源。 某语言的资源和某语言限定区域的资源之间。如values-fr-rCA存在于values-fr相同的字符串,这种表现最为严重。...某语言的资源和默认的资源之间。values-fr存在与values相同的字符串,可能原因是由于values-fr存在未翻译字符串导致 为什么要去重 洁癖,容不下半点冗余。...这样可以保证在values-fr-rCA下也可以正确读取到资源。 如果values-fr存在与values相同的字符串。如去除values-fr中得重复字符串,保留values的条目。...") else: return (basicLanguage + '/strings.xml', filePath + "/strings.xml
(#lint/SetTextI18n) (Ctrl+F1 Alt+T) 请勿使用setText方法连接显示文本.用占位符使用字符串资源(提示我们尽量使用strings.xml的字符串来显示文本)。...这样的信息不能被正确的翻译。...通过以上信息,我们可以得知: 不建议使用Numer.toString()的方式来进行字符串的转换,建议使用规范格式(%d或%f)的字符串来代替; 不建议直接使用字符串文字来直接显示文本,建议直接使用Android...---- 解决方法 通过上述对问题的分析解读,我们上述类似问题所引发的警告可以通过如下方式更规范化的使用TextView.setText()方法: 使用String.format方法 在strings.xml...使用Android字符串资源来替换字符串文字
我们知道工程的根目录有个res/的目录,res/下有一个资源类型的目录,其中有个values/strings.xml默认文件,在res/目录下创建多个values/strings.xml文件,但是values... 然后,我们就可以在代码中使用R.string.语法来引用字符串资源就行了。...在我们开发项目中应该提供一些可选资源,针对尺寸和分别率来优化我们的界面外观。...4.尽量使用android的Shape自定义view背景,这样会随之自适应。...也可以只在layout中创建xml,通过this.getResources().getConfiguration().orientation来判断当前是横屏还是竖 屏,然后在oncreate方法中加载不同的布局
本文将介绍一个很geeky的方法来利用webview实现html的i18n。 基本概念 国际化是指在设计软件,将软件与特定语言及地区脱钩的过程。...当软件被移植到不同的语言及地区时,软件本身不用做内部工程上的改变或修正。本地化则是指当移植软件时,加上与特定区域设置有关的信息和翻译文件的过程。 国际化和本地化之间的区别虽然微妙,但却很重要。...国际化意味着产品有适用于任何地方的“潜力”;本地化则是为了更适合于“特定”地方的使用,而另外增添的特色。用一项产品来说,国际化只需做一次,但本地化则要针对不同的区域各做一次。...所以上述并不是一种很好的方法 更Hacky的实现 实现思路主要是借助强大的Android系统的资源适配机制(基于设备设备的信息Locale等匹配最合适的资源)。...加载网页 提供多个Locale文字资源 values/strings.xml lineos:false 1 2 3 4 5 <?
在后续的内容中会涉及更复杂的资源使用。程序中如果要使用字符串,通过标签来定义字符串。每一个字符串用一个标签来表示。...创建一个round_button.xml文件。它会根据按钮的状态来切换使用不同的样式(指向不同的drawable)来呈现动态的效果。...在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的sQLite数据库文件。 2、说明Android系统中的两种资源。...res目录只能有一层子目录,而且这些子目录必须是预定义的,如res/layout、res/values等都是合法的,而res/abc,res/xyz并不是合法的资源目录。...第二种就是放在assets文件夹下面的原生资源文件,放在这个文件夹下面的文件不会被R文件编译,所以不能像第一种那样直接使用。
资源文件的单一 Android提供了各种资源文件,strings.xml用来存储字符串,arrays.xml用来存储字符串数组,colors.xml用来存储颜色值,dimens.xml用来存储尺寸值,等等...资源文件的单一,是说所有相关的资源信息要在资源文件里定义并引用到代码或布局文件里,而不是在代码或布局文件里直接定义。...因此,就必须规范好,应用界面中的字符串统一在strings.xml中定义,颜色值统一在colors.xml中定义,尺寸值统一在dimens.xml中定义,代码或布局里需要用到的都去引用资源文件相应的字段...下面是我觉得对保持简洁有一定作用的一些操作方法。 包的组织 按照组件类型来分包,而不是按业务模块来分包。业务有可能会变,但组件类型是基本不变的。...资源文件的分类 strings.xml文件用来存储应用中的所有字符串,包括页面标题,按钮文字,标签文字,提示文字等等,应该做好分类并统一存放。
它自动为你管理retain和release的过程,所以你就不必去手动干预了。忘掉代码段结尾的release简直像记得吃饭一样简单。而ARC会自动在底层为你做这些工作。...你可以使用NSURLConnection异步地做网络操作: ? 或者使用像AFNetworking这样的框架来异步地做这些操作。...注意你可以通过 NSURLConnection 获取一个URL request, AFNetworking也一样的。这样你就不必为采用这条tip而改变所有的networking代码了。...但是XML也有XML的好处,比如使用SAX来解析XML就像解析本地文件一样,你不需像解析json一样等到整个文档下载完成才开始解析。当你处理很大的数据的时候就会极大地减低内存消耗和增加性能。...如果你使用SQLite,你可以用FMDB(https://GitHub.com/ccgus/fmdb)这个库来简化SQLite的操作,这样你就不用花很多经历了解SQLite的C API了。 23.
例如,values-es/ 是包含带有语言编码“es”的本地方言简单资源的路径 . Android 会根据设备在运行时的方言设置来加载相近的资源 . 更多信息,键 提供可选资源.... 注意:你可以在任何资源类型上使用到这个方言限定符 (或者任何配置限定符), 比如你想要提供位图的方言化版本. 更多的信息,见 本地化....使用 String 资源 你可以使用由元素名称属性定义的资源名称来引用你的资源代码和XML文件中的字符串资源。 在你的源代码中,你可以使用 R.string....来引用字符串资源. 有各种方法可以用这种方式接受一个字符串资源 ....文件中, 无论何时XML属性药接收一个字符串值你都可以使用语法 @string/ 来应用一个字符串资源 .
它自动为你管理retain和release的过程,所以你就不必去手动干预了。忘掉代码段结尾的release简直像记得吃饭一样简单。而ARC会自动在底层为你做这些工作。...)queue completionHandler:(void (^)(NSURLResponse, NSData, NSError*))handler 或者使用像AFNetworking这样的框架来异步地做这些操作...这样你就不必为采用这条tip而改变所有的networking代码了。 如果你需要缓存其它不是HTTP Request的东西,你可以用NSCache。...但是XML也有XML的好处,比如使用SAX来解析XML就像解析本地文件一样,你不需像解析json一样等到整个文档下载完成才开始解析。当你处理很大的数据的时候就会极大地减低内存消耗和增加性能。...如果你使用SQLite,你可以用FMDB(https://GitHub.com/ccgus/fmdb)这个库来简化SQLite的操作,这样你就不用花很多经历了解SQLite的C API了。
或者使用像 AFNetworking这样的框架来异步地做这些操作。...NSURLConnection默认会缓存资源在内存或者存储中根据它所加载的HTTP Headers。你甚至可以手动创建一个NSURLRequest然后使它只加载缓存的值。...注意你可以通过 NSURLConnection 获取一个URL request, AFNetworking也一样的。这样你就不必为采用这条tip而改变所有的networking代码了。...比如你需要很多的Sprite sheets,像敌人,导弹之类的动作类必备元素,你可以重用这些sprites而不用每次都要重新创建。 15....但是XML也有XML的好处,比如使用SAX 来解析XML就像解析本地文件一样,你不需像解析json一样等到整个文档下载完成才开始解析。当你处理很大的数据的时候就会极大地减低内存消耗和增加性能。
" > 用途: Lint tools:locale 该属性可以在资源文件的根元素上设置,可以设置一个合适的语言以及一个可选的地区。...这样可以让tools知道资源文件里的字符串应用的是什么语言。...比如,values/strings.xml 可以有如下根元素: 现在我们知道,默认values文件里的字符串使用的是西班牙语,而不是英语。...这可以用来让布局编辑器知道其默认的主题,因为主题一般都是在清单文件里和与之关联的Activity里定义,而不是在布局文件里。和在清单文件中指定activity的类一样,你也可以使用.开头设置。
第一,现在可以调用LocaleManager的setOverrideLocaleConfig()方法来动态设置当前应用所支持的语言列表,而不是像Android 13那样只能在AndroidManifest.xml...第二,输入法软件可以调用LocaleManager的getApplicationLocales()方法来获取当前App正在显示的语言。这样就可以针对性地调整键盘,以满足用户的输入需求。...然后在创建字符串资源的时候,可以将这些性别限定符也一同进行指定: 限定符 字符串资源文件 feminine res/values-fr-feminine/strings.xml masculine res.../values-fr-masculine/strings.xml neuter res/values-fr-neuter/strings.xml 这样,我们就在法语环境下,为不同性别的人群创建了独立的字符串资源文件...静态注册的话,我们可以通过在AndroidManifest.xml中配置exported属性来决定是否接收外部程序发送的广播。 而动态注册则没长期没有这项功能。
除阿里插件之外这些好用的插件你知道吗?...有这样的 有这样的:介绍就一句话,没有具体用法,但是有下载地址和文档地址(我还要去打开文档去看,有些是英文的,还需要去翻译)。 ?...有这样的 有这样的:标题是链接,点进去有的链接已经失效,介绍用法是全英文的,我还要去翻译。 ? 有这样的 有这样的:这个稍好一些,标题是链接,有介绍,没有图片讲解,需要点击标题链接进去。 ?...3) 生成的全局变量的导包是在变量类型上的,而不是在类外面导包,很不规范。...strings.xml资源的插件 官方的示意图如下: ?
xml 处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好。...文件,一个应用可以创建多个这样的xml文件。...对于像视频这样的大文件,我们可以把它存放在SDCard。 SDCard是干什么的?你可以把它看作是移动硬盘或U盘。...有两种方法可以给表添加数据。 像上面创建表一样,你可以使用 execSQL() 方法执行 INSERT, UPDATE, DELETE 等语句来更新表的数据。...SQLite 数据库管理工具 在其他数据库上作开发,一般都使用工具来检查和处理数据库的内容,而不是仅仅使用数据库的 API。
SQL或数据科学领域的初学者通常会很难轻易访问大型示例数据库文件(.DB或.sqlite)来练习SQL命令。...幸运的是,网上有许多高质量的真实数据库可用于尝试学习热门机器学习技巧。但是,从我个人的经验来看从个人经验来讲,我发现学习SQL并不是这样。...你能想到在网络上使用这个吗?你不想给出真实的电子邮件ID,但是可以给出一个相似的?...有一些问题很容易想到: 我们可以将机器学习/统计建模和这个随机数据生成器集成吗? 可视化功能可以被添加到发生器中吗?...你也可以在Python,R或MATLAB以及机器学习资源中查找作者的GitHub存储库(链接:https://github.com/tirthajyoti?
, 资源将会和应用程序一起部署, 在运行时可以通过 AssetManager 使用类似下面的代码进行访问: public class ReadAsset : Activity { protected...比如, 一个简单的 Android 应用包含一个界面描述文件 (main.axml) , 一个国际化的字符串字典 (strings.xml) 以及图标 (icon.png) , 这些文件按照下面的结构保存在...则可以引用 values/strings.xml 文件中的第一个字符串。...而 Android 程序则不同, 一个 Android 程序由一些松散的 Activity 提供的界面组成, 因此看起来有点儿像 Web 应用程序, 任何一个 Activity 都可以通过 URL 启动...还是那句话, Mono for Android 最大的好处是可以利用现有的 .Net 代码, CodePlex 以及 Github 上有丰富的资源可以利用, 如果你熟悉 .Net 开发, Mono for
其实,实现方案不止一个,这里,我提供两个方案,一个可以使用Product Flavors实现,一个可以使用Build Types来实现。...但这样是不够的,两个app将会一模一样,很难区分。因此,我们也要修改两个环境版本的应用名称,同时还要使用不同的应用图标。怎么做呢?...而beta版本的strings.xml则只需要包含一个属性,如下: appNameBeta</resources...就会覆盖main目录下相应位置的ic_launcher.png;同样的,beta下的strings.xml里定义的app_name就会覆盖main目录下的strings.xml定义的app_name。...对于本方案二来说,并不需要再定义额外的productFlavors,使用默认的即可。
领取专属 10元无门槛券
手把手带您无忧上云