gpt4 book ai didi

cordova - Cordova/Ionic Phonegap 应用程序中的全局化/国际化

转载 作者:行者123 更新时间:2023-12-04 10:39:44 31 4
gpt4 key购买 nike

我必须在 phonegap 应用程序中实现全局化。问题是我是否应该在编译应用程序之前进行翻译,或者在运行时进行翻译。

我可以去两个方向:

  • 第一个是使用像 gulp-i18n-localize 这样的插件将源代码翻译成我想要的每种语言,然后
    将每个翻译的源代码编译到不同的文件夹中
    (en、sp、it 等)。然后在应用程序中调用我需要的文件夹
    取决于我从 navigator.language 得到的信息.
  • 第二个是创建一个服务,每次加载组件或 Controller 时我都会调用它,它将翻译
    在呈现之前将每个单词/短语转换为目标语言。
    类似:global.trans('Save') .它也将获得
    语言来自 navigator.language .


  • 这是一个应用程序,因此不会有大段落,而只有标题、按钮、标签或消息/警报中使用的单词或小句子。
  • 由于调用 apis 时发送的语言参数,数据将从服务器已经以所需的语言发送。
  • 应用程序肯定会在 future 进行一些修改,因此主要源代码应该集中,以便每次更新时不必在不同语言的多个源中执行相同的更改。


  • 是否有人已经实现了这些解决方案之一并遇到了任何问题?或者已经考虑过其中一个可能存在的问题,或者认为哪个应该是最好的解决方案?您可以考虑其他任何选择吗?

    我看到的唯一问题是,在第一种情况下,apk 的大小会增加,因为每种语言都会有一个“站点”,并且每次我想添加一种语言时,我都必须修改 gulpfile.js(除了字典) .在第二种情况下,它将为应用程序增加一些负载,因为它将翻译给定的每个单词/短语(翻译意思是调用服务,服务在字典(json)中搜索单词/短语/语言并返回值) ,虽然每页/屏幕没有多少翻译)。

    最佳答案

    我们最近经历了一个非常相似的思考过程,我们采取的步骤和最终得出的解决方案可能对您有所帮助。
    TL; 博士
    这样做:https://www.positronx.io/angular-internationalization-i18n-with-ngx-translate-tutorial/
    语境
    我们正在使用 ionic /角/电容器而不是直 Cordova ,但我相信情况非常相似。
    在我的场景中,我们有一个网站 SPA 和一个 Android 移动应用程序,其中包含大量共享代码,因此我们很自然地希望选择一种对两者都适用的方法。
    我们首先尝试的是什么
    我最初与您有类似的思考过程,这使我最初使用 Angular 目前支持的“构建时间”本地化方法 ( https://angular.io/guide/i18n )。
    这对 SPA 来说很有效,尽管它只有在添加 https://github.com/martinroob/ngx-i18nsupport 后才变得可行。允许随着应用程序的发展重新合并 XLIFF 文件。
    一个小缺点是需要设置一个兼容 XLIFF 的工具来实际进行翻译,效率最低。 (我们使用了 https://omegat.org/ )。
    然而,一旦我们将相同的解决方案应用于移动应用程序,严重的缺点就变得很明显:

  • 每个语言环境都需要一个单独的构建命令(在 angular.json/package.json 中有关联的脚手架)。鉴于我们已经为不同的环境和场景提供了不同的构建脚本变体,当我们添加更多语言环境时,这将导致变体的“组合爆炸”。
  • 为每个语言环境生成一个单独的 APK,这是一个完整的 PITA,并且很快将变得几乎不可能在 Google Play 上部署(请参阅说明 here 的计划,以强制使用“App Bundles”)。
  • Capacitor 在构建时不能很好地与 Angular i18n 配合使用,详细描述 on this Ionic forum post .基本上,您的构建脚本必须为每个构建修改capacitor.config.json。

  • 我们最终做了什么
    考虑到以上所有情况,我们回到绘图板并尝试了一种不同的方法,基本上使用@ngx-translate,如 in this tutorial 所述。 .
    虽然我们最初对带宽/性能有一些担忧,但观察它在实践中的工作方式,把这些放在一边:
  • 每种语言的翻译都在一个加载一次的单个 JSON 文件中 - 如果应用程序要求使用该语言。纯文本可以很好地在线上压缩。单个文件(在 SPA 场景中)的请求开销约为 400 字节。
  • 我们的 SPA 是从 S3 存储桶提供的,并且使用 CDN(在我们的例子中是 CloudFront),该存储桶是从希望非常接近客户端设备的边缘节点提供的。在 APK 场景中,语言文件已经在设备上。
  • 在这两种情况下,切换语言都非常快,即使在新语言文件的初始加载时也接近瞬时。

  • 撇开性能不谈,还有其他好处:
  • 该库利用 Angular 的管道脚手架来制作翻译 .html 文件中标签的语法,非常干净
  • JSON 翻译文件可以使用文本编辑器进行编辑,而且语法非常明显,即使是非程序员也可以编辑 - 不像 XLIFF 文件
  • 只有一个 BUILD VARIANT 和一个 APK - 万岁:此版本包含所有语言
  • 编译后的APK实际上比之前的方式小了一点,可能是因为工具更轻了
  • 无需在每次应用更改标签时重新生成和重新合并主 XLIFF 文件。

  • 版本信息:
    "@angular/core": "^9.1.12",
    "@ionic/angular": "^5.3.2"
    "@ngx-translate/core": "^13.0.0",
    "@ngx-translate/http-loader": "^6.0.0",

    关于cordova - Cordova/Ionic Phonegap 应用程序中的全局化/国际化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59986140/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com