gpt4 book ai didi

angularjs - 前端与后端本地化策略比较

转载 作者:行者123 更新时间:2023-12-04 02:21:01 25 4
gpt4 key购买 nike

我正在开发一个基于 Sails JS 后端和 Web 和移动前端的应用程序。我对前端框架的计划是:

  • 网络前端 - AngularJS + Bootstrap
  • 移动前端 - AngularJS + Ionic 以及来自 Apache Cordova 的后续端口

  • 关于上面的简要说明,我必须在应用程序中添加一个本地化功能。这就是我的问题出现的地方——因为 Sails JS 和 AngularJS 都支持本地化,我的项目应该选择哪一个?
    从理论上讲,我可以拥有:
  • 完整的后端本地化 - 我将使用内置 Sails JS 功能并将所有本地化资源作为 json 文件放到后端
  • 完整的前端本地化 - 我可以添加 AngularJS 插件并在前端或
  • 上本地化接口(interface)
  • 混合后端和前端本地化。

  • 如果有更多实践经验的人详细说明该主题,考虑应用程序架构,并就可用选项的可能优缺点给我一些启发,我将不胜感激。

    最佳答案

    我更喜欢像1这样的东西。

    我们正在开发一个非常庞大的 Angular.js SPA 应用程序,它也支持 i18n。首先我们使用完整的前端本地化(如果我没记错的话 this one )

    但是当应用程序变得越来越大时,管理 i18n 文件,将它们加载到页面中变得很麻烦(并且您只需要加载所需的字符串,因为 i18n 文件很大!)等等。

    此外,用户很少会更改语言,它不需要是动态的、快速的、双向绑定(bind)的或其他任何东西。如果我们重新加载整个应用程序就可以了。

    所以我们想为什么?我们在前端不需要 i18n。我们的“应用程序”中需要 i18n。然后,我在node.js上写了一个构建系统,基本上就是一个解析所有*.html and *.js的预处理器。我们拥有的文件,从中提取字符串,使用 i18n 文件查找它们,放置本地化字符串并根据语言计数创建文件副本。

    所以基本上,我们创建 n应用程序而不是 1 个,全部以编程方式生成,每个应用程序都使用不同的语言。

    它工作得很好。当用户更改语言时,我们重新加载页面并包含另一个本地化文件集,并且语言被更改!

    示例源 html 文件:

    <header>@message("string.to.be.localized.1"i "{{name}}")</header>

    示例 js 文件:
    angular.module("app", [])
    .directive("x", function(i18n) {
    return {
    templateUrl: "@HTML/templates/a.html",
    link: function() { console.log(i18n("string.in.js", "Umut")); }
    }
    })

    编译后:

    source.en.html
    <header>Hello {{name}}</header>

    source.tr.html
    <header>Merhaba {{name}}</header>

    示例.en.js
    angular.module("app", [])
    .directive("x", function(i18n) {
    return {
    templateUrl: "/templates/a.en.html",
    link: function() { console.log("Hello {0}", "Umut")); }
    }
    })

    示例.tr.js
    angular.module("app", [])
    .directive("x", function(i18n) {
    return {
    templateUrl: "/templates/a.tr.html",
    link: function() { console.log("Merhaba {0}", "Umut")); }
    }
    })

    关于angularjs - 前端与后端本地化策略比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28736477/

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