1# 多语言支持 2 3 4基于开发框架的应用会覆盖多个国家和地区,开发框架支持多语言能力后,可以让应用开发者无需开发多个不同语言的版本,就可以同时支持多种语言的切换,为项目维护带来便利。 5 6 7开发者仅需要通过[定义资源文件](#定义资源文件)和[引用资源](#引用资源)两个步骤,就可以使用开发框架的多语言能力。 8 9 10## 定义资源文件 11 12资源文件用于存放应用在多种语言场景下的资源内容,开发框架使用JSON文件保存资源定义。 13 14在[文件组织](js-service-widget-file.md)中指定的i18n文件夹内放置每个语言地区下的资源定义文件即可,资源文件命名为“语言-地区.json”格式,例如英文(美国)的资源文件命名为en-US.json。当开发框架无法在应用中找到系统语言的资源文件时,默认使用en-US.json中的资源内容。 15 16由于不同语言针对单复数有不同的匹配规则,在资源文件中的使用“zero”“one”“two”“few”“many”“other”定义不同单复数场景下的词条内容。例如中文不区分单复数仅存在“other”场景;英文存在“one”、“other”场景;阿拉伯语存在上述6种场景。 17 18 以en-US.json和ar-AE.json为例,资源文件内容格式如下: 19 20```json 21{ 22 "strings": { 23 "hello": "Hello world!", 24 "symbol": "@#$%^&*()_+-={}[]\\|:;\"'<>,./?", 25 "plurals": { 26 "one": "one person", 27 "other": "other people" 28 } 29 }, 30 31 "files": { 32 "image": "image/en_picture.PNG" 33 } 34} 35``` 36 37 38```json 39{ 40 "strings": { 41 "plurals": { 42 "zero": "لا أحد", 43 "one": "وحده", 44 "two": "اثنان", 45 "few": "ستة اشخاص", 46 "many": "خمسون شخص", 47 "other": "مائة شخص" 48 } 49 } 50} 51``` 52 53 54## 引用资源 55 56在应用开发的页面中使用多语言的语法,包含简单格式化和单复数格式化两种,都可以在hml或js中使用。 57 58- 简单格式化方法 59 在应用中使用$t方法引用资源,$t既可以在hml中使用,也可以在js中使用。系统将根据当前语言环境和指定的资源路径(通过$t的path参数设置),显示对应语言的资源文件中的内容。 60 61 **表1** 简单格式化 62 63 | 属性 | 类型 | 参数 | 必填 | 描述 | 64 | ---- | -------- | -------- | ---- | -------------------------------------- | 65 | $t | Function | 请见$t参数说明 | 是 | 根据系统语言完成简单的替换:this.$t('strings.hello') | 66 67 **表2** $t参数说明 68 69 | 参数 | 类型 | 必填 | 描述 | 70 | ---- | ------ | ---- | ---- | 71 | path | string | 是 | 资源路径 | 72 73- 简单格式化示例代码 74 75 ```html 76 <!-- xxx.hml --> 77 <div> 78 <text>{{ $t('strings.hello') }}</text> 79 <image src="{{ $t('files.image') }}" class="image"></image> 80 </div> 81 ``` 82 83- 单复数格式化方法 84 85 **表3** 单复数格式化 86 87 | 属性 | 类型 | 参数 | 必填 | 描述 | 88 | ---- | -------- | --------- | ---- | ---------------------------------------- | 89 | $tc | Function | 请见$tc参数说明 | 是 | 根据系统语言完成单复数替换:this.$tc('strings.plurals')<br/>定义资源的内容通过json格式的key为“zero”、“one”、“two”、“few”、“many”和“other”区分。 | 90 91 **表4** $tc参数说明 92 93 | 参数 | 类型 | 必填 | 描述 | 94 | ----- | ------ | ---- | ----- | 95 | path | string | 是 | 资源路径 | 96 | count | number | 是 | 要表达的值 | 97 98- 单复数格式化示例代码 99 100 ```html 101 <!--xxx.hml--> 102 <div> 103 <!-- 传递数值为0时: "0 people" 阿拉伯语中此处匹配key为zero的词条--> 104 <text>{{ $tc('strings.plurals', 0) }}</text> 105 <!-- 传递数值为1时: "one person" 阿拉伯语中此处匹配key为one的词条--> 106 <text>{{ $tc('strings.plurals', 1) }}</text> 107 <!-- 传递数值为2时: "2 people" 阿拉伯语中此处匹配key为two的词条--> 108 <text>{{ $tc('strings.plurals', 2) }}</text> 109 <!-- 传递数值为6时: "6 people" 阿拉伯语中此处匹配key为few的词条--> 110 <text>{{ $tc('strings.plurals', 6) }}</text> 111 <!-- 传递数值为50时: "50 people" 阿拉伯语中此处匹配key为many的词条--> 112 <text>{{ $tc('strings.plurals', 50) }}</text> 113 <!-- 传递数值为100时: "100 people" 阿拉伯语中此处匹配key为other的词条--> 114 <text>{{ $tc('strings.plurals', 100) }}</text> 115 </div> 116 ``` 117