首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4在管理端管理基于文件的翻译

Rails 4在管理端管理基于文件的翻译
EN

Stack Overflow用户
提问于 2015-09-16 06:06:33
回答 1查看 319关注 0票数 0

我正在致力于一个rails网站,我需要使它多语种。我已经为翻译所需的语言创建了yml文件。

我想要的是通过管理面板中的一个部分提供对文件的管理权限来编辑文件,而不是浏览文件。是否有通过管理端管理翻译的创业板?

我以前从来没有翻译过。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-16 06:23:00

默认情况下,Rails使用YAML文件存储国际化信息。但我们并不局限于使用YAML (这只能读取翻译,但不能动态地存储它们)。我们可以使用任何数据库作为后端。

首先,您可以使用gem:record

您可以这样更改默认后端:

代码语言:javascript
复制
I18n.backend = Globalize::Backend::Static.new

您还可以使用Chan后端将多个后端连接在一起。

代码语言:javascript
复制
# config/initializers/locale.rb
I18n.backend = I18n::Backend::Chain.new(I18n::Backend::ActiveRecord.new, I18n.backend)

但是,由于在每个请求页面中都经常访问翻译,所以ActiveRecord并不是最好的方法。由于这些原因,键值存储是可行的。

为此,可以使用Redis数据库:

第一次安装Redis

代码语言:javascript
复制
$ brew install redis

安装红宝石:

代码语言:javascript
复制
# Gemfile
source 'http://rubygems.org'

# ...    

gem 'redis'

现在,您可以这样更改后端:

代码语言:javascript
复制
# config/initializers/locale.rb
I18n.backend = I18n::Backend::KeyValue.new(Redis.new)

添加翻译的代码:

代码语言:javascript
复制
# /app/views/admin/translations/index.html.erb

<%= form_tag admin_translations_path do %>
    <p>
        <%= label_tag :locale %><br>
        <%= text_field_tag :locale %>
    </p>

    <p>
        <%= label_tag :key %><br>
        <%= text_field_tag :key %>
    </p>

    <p>
        <%= label_tag :value %><br>
        <%= text_field_tag :value %>
    </p>
    <p><%= submit_tag "Submit" %></p>
<% end %>

此表单将发布到admin/TranslationsController的create操作:

代码语言:javascript
复制
 # /app/controllers/admin/translations_controller.rb
 module Admin
    class TranslationsController < ApplicationController
         # ....

         def create
             I18n.backend.store_translations(params[:locale]), {params[:key] => params[:value]}, escape: false)
             redirect_to admin_translations_path, notice: "Translation Added"
         end
     end
end

您还可以使用redis-i18n gem进行相同的操作:https://github.com/redis-store/redis-i18n

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32600912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档