gpt4 book ai didi

ruby-on-rails - 使用 Rails 服务器进行 AngularJS 模板翻译的方法

转载 作者:行者123 更新时间:2023-12-04 03:53:43 25 4
gpt4 key购买 nike

我需要使用 AngularJS 前端和 Ruby on Rails 服务器来实现具有多语言支持的应用程序。
我正在寻找一种合理的方法来以多种语言呈现翻译后的模板。我想出了一个我希望得到反馈的方法。

在 Angular 路由定义中,将模板属性设置为仅具有 ng-include 的 html 部分,其中 src 属性值由 Controller 设置。需要这种方法来动态修改要从服务器获取的模板的路径;它在这里描述:
AngularJS - How to use $routeParams in generating the templateUrl?

所以 Angular 路由配置看起来像:

angular.module('myApp', []).
config(function ($routeProvider) {
$routeProvider.when('/sites/new', {
template: '<div ng-include src="templateUrl"></div>',
controller: 'RouteController'
});
});

Controller 看起来像:
// Set a prefix on the URL path, something like “es”
function RouteController($scope, $routeParams) {
$scope.templateUrl = $routeParams.locale + "/template/sites/site";
}

这里 $routeParams.locale用于设置语言环境,但可以是用户操作设置的变量。动态修改模板 URL 路径以添加语言环境前缀的方法似乎有点复杂,但我不知道其他方法。

在 Rails 端,在 routes.rb 中,添加一个路由:
match '/:locale/template/*template' => 'template#get'

该路由使用路由通配符,因此 params[:template] value 可以是多级路径。 TemplateController#get action 只渲染由 params[:template] 确定的部分
模板 Controller 代码类似于:
class TemplateController < ApplicationController
layout false
caches_page :get

def get
render(template: "template/#{params[:template]}")
end
end

Rails I18n 对翻译的支持用于 erb 模板中,根据 locale 参数进行翻译。
在生产中,缓存将被打开。这将避免产生翻译开销。 URL 路径的语言环境前缀将导致每个语言的翻译模板集被缓存。

这种方法尽可能地将翻译处理推送到服务器端。

这种方法有什么基本问题吗?

能不能做得更好?

最佳答案

您可能对 angular-translate 感兴趣模块。

关于ruby-on-rails - 使用 Rails 服务器进行 AngularJS 模板翻译的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14470441/

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