From c7c37eb722427e4e782648133d2d34b3ed01a286 Mon Sep 17 00:00:00 2001 From: chenzhensheng79 <14766248+chenzhensheng79@user.noreply.gitee.com> Date: Tue, 13 Aug 2024 14:09:26 +0800 Subject: [PATCH 1/2] =?UTF-8?q?LocalizationChannel.getStringResource?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../localization/LocalizationPlugin.ets | 52 ++++++++++++++----- 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/localization/LocalizationPlugin.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/localization/LocalizationPlugin.ets index 93ce6e6d25..f9183e2c7b 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/localization/LocalizationPlugin.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/localization/LocalizationPlugin.ets @@ -13,20 +13,23 @@ * limitations under the License. */ -import LocalizationChannel, { LocalizationMessageHandler } from '../../embedding/engine/systemchannels/LocalizationChannel' +import LocalizationChannel, { + LocalizationMessageHandler +} from '../../embedding/engine/systemchannels/LocalizationChannel' import common from '@ohos.app.ability.common'; import intl from '@ohos.intl'; import Log from '../../util/Log'; import i18n from '@ohos.i18n'; -const TAG = "LocalizationPlugin"; +const TAG = "LocalizationPlugin"; + export default class LocalizationPlugin { - private localizationChannel:LocalizationChannel; + private localizationChannel: LocalizationChannel; private context: common.Context; localeFromString(localeString: string): intl.Locale { - localeString = localeString.replace('_','-'); - let parts: string[] = localeString.split('-',-1); + localeString = localeString.replace('_', '-'); + let parts: string[] = localeString.split('-', -1); let languageCode = parts[0]; let scriptCode = ""; let countryCode = ""; @@ -41,13 +44,35 @@ export default class LocalizationPlugin { countryCode = parts[index]; index++; } - return new intl.Locale(languageCode+'-'+ countryCode +'-' + scriptCode); + return new intl.Locale(languageCode + '-' + countryCode + '-' + scriptCode); } - private localizationMessageHandler: LocalizationMessageHandler =new enterGetStringResource(()=>{ - Log.i(TAG, "getResource enter"); - return "" - }) + private localizationMessageHandler: LocalizationMessageHandler = + new enterGetStringResource((key: string, localeString: string | null) => { + Log.i(TAG, "getStringResource,key: " + key + ",localeString: " + localeString); + let localContext: common.Context = this.context; + let stringToReturn: string | null = null; + // 获取资源管理器 + let resMgt = localContext.resourceManager; + + try { + // 如果localeString不为空,则更新为指定地区的资源管理器 + if (localeString) { + let overrideConfig = resMgr.getOverrideConfiguration(); + overrideConfig.locale = localeString; + let overrideResMgr = resMgr.getOverrideResourceManager(overrideConfig); + stringToReturn = overrideResMgr.getStringByNameSync(key); + } else { + stringToReturn = overrideResMgr.getStringByNameSync(key); + } + } catch (e) { + Log.e(TAG, e); + return null; + } + + return stringToReturn; + }) + constructor(context: common.Context, localizationChannel: LocalizationChannel) { this.context = context; this.localizationChannel = localizationChannel; @@ -61,10 +86,11 @@ export default class LocalizationPlugin { this.localizationChannel.sendLocales(data); } } -class enterGetStringResource{ - getStringResource : (key: string, localeString: string)=>string - constructor(getStringResource: (key: string, localeString: string)=>string) { +class enterGetStringResource { + getStringResource: (key: string, localeString: string | null) => string | null + + constructor(getStringResource: (key: string, localeString: string | null) => string | null) { this.getStringResource = getStringResource } } \ No newline at end of file -- Gitee From d3378253137eb88552e3816c8e8a081761015921 Mon Sep 17 00:00:00 2001 From: chenzhensheng79 <14766248+chenzhensheng79@user.noreply.gitee.com> Date: Tue, 13 Aug 2024 15:07:47 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0signed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chenzhensheng79 <15118029047@139.com> --- .../src/main/ets/plugin/localization/LocalizationPlugin.ets | 1 + 1 file changed, 1 insertion(+) diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/localization/LocalizationPlugin.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/localization/LocalizationPlugin.ets index f9183e2c7b..87f131f185 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/localization/LocalizationPlugin.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/localization/LocalizationPlugin.ets @@ -49,6 +49,7 @@ export default class LocalizationPlugin { private localizationMessageHandler: LocalizationMessageHandler = new enterGetStringResource((key: string, localeString: string | null) => { + Log.i(TAG, "getStringResource,key: " + key + ",localeString: " + localeString); let localContext: common.Context = this.context; let stringToReturn: string | null = null; -- Gitee