应用可以通过在resources目录下添加限定词目录,如日语ja_JP、德语de_DE,增加不同语言资源文件后,在应用运行时,通过指定资源配置方式,让应用展示不同国家语言。
参考示例:
{
"string": [
{
"name": "language",
"value": "这是中文"
}
]
} {
"string": [
{
"name": "language",
"value": "これは日本語です"
}
]
} {
"string": [
{
"name": "language",
"value": "This is English"
}
]
} 在Index.ets中,分别获取三种语言的资源并显示在文本框中,运行设备当前系统语言为中文,示例代码:
import { common } from '@kit.AbilityKit';
@Entry
@Component
struct Index {
@State englishString: string = '';
@State jpString: string = '';
getString(): string {
let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
let resMgr = context.resourceManager;
let resId = $r('app.string.language').id;
// 获取符合当前系统语言地区、颜色模式、分辨率等配置的资源
let currentLanguageString = resMgr.getStringSync(resId);
// 获取符合当前系统颜色模式、分辨率等配置的英文资源
let overrideConfig = resMgr.getOverrideConfiguration();
overrideConfig.locale = 'en_US'; // 指定资源的语言为英语,地区为美国
let overrideResMgr = resMgr.getOverrideResourceManager(overrideConfig);
this.englishString = overrideResMgr.getStringSync(resId);
// 获取符合当前系统颜色模式、分辨率等配置的日文资源
overrideConfig.locale = 'ja_JP'; // 指定资源的语言为日文,地区为日本
overrideResMgr.updateOverrideConfiguration(overrideConfig); // 等效于resMgr.updateOverrideConfiguration(overrideConfig)
this.jpString = overrideResMgr.getStringSync(resId);
return currentLanguageString;
}
build() {
Row() {
Column() {
Text(this.getString())
.fontSize(45)
.fontWeight(FontWeight.Bold)
.margin({ top: 10 });
Text(this.englishString)
.fontSize(45)
.fontWeight(FontWeight.Bold)
.margin({ top: 10 });
Text(this.jpString)
.fontSize(45)
.fontWeight(FontWeight.Bold)
.margin({ top: 10 });
}
.width('100%');
}
.height('100%');
}
}