1

これを行うことでRails I18Nを悪用しているように感じます...もっと良い方法はありますか?

Rails Guidesに記載されている標準的な手法を使用して、I18N を備えたアプリを構築しています。

また、クライアントごとにアプリをブランディングしたいと考えており、これをローカリゼーションに重ねることでこれを行っています。

たとえば、私はこれを持っていますapplication_controller.rb:

class ApplicationController < ActionController::Base
  before_filter :set_locale

  def set_locale
    brand = request.subdomains.first || nil
    I18n.locale = [brand, params[:locale] || I18n.default_locale].compact.join('_')
  end

end

そして次にen.yml

en:
  home: "Home"
arc_en:
  home: "ARC 1-Click Home"
yata_en:
  home: "YATA Home"

それは機能しますが、これはちょっとぎこちなく感じられ、将来後悔するかもしれません. より良い方法はありますか?


さて、私はこのアプローチで問題に遭遇しました。私が完全に持っているものは次のapplication_controller.rbとおりです。

  def set_locale
    I18n.locale = [brand, params[:locale] || I18n.default_locale].compact.join('_')
  end

  def default_url_options(options={})
    { :locale => ((I18n.locale == I18n.default_locale) ? nil : I18n.locale) }
  end

そしてroutes.rb私は:

Oneclick::Application.routes.draw do
  scope "(:locale)", locale: /arc_en|arc_es|yata_en|yata_es/ do
    authenticated :user do
      root :to => 'home#index'
    end
    devise_for :users
    resources :users
    match '/' => 'home#index'
  end
  root :to => "home#index"
end

それは機能しますが、取得する URL に夢中になっているわけではありません。たとえば、http://arc.1click.local:3000/自分の開発環境で から開始したとしても (既定:enでは my で指定されているように設定されていますapplication.rb)、サインアップ リンクはhttp://arc.1click.local:3000/arc_en/users/sign_up.

(ドメイン名からhttp://arc.1click.local:3000/users/sign_upブランドを取得でき、デフォルトのロケールであるため) または私は.arcenhttp://arc.1click.local:3000/en/users/sign_up

提案?

4

2 に答える 2

2

ロケールの定義は単純化すると、言語 + 文化的参照、文字セットなどです。その意味で、このアプローチは完全に有効です。

ロケール定義の ISO フレーバーともう少し一貫性を持たせるために、言語コードが最初に表示され、その後に地域識別子が続きます (例: pt-BR) 。 (想像してみてくださいen-medical、完全に理にかなっています)。

I18n には、アプリケーションからコンテンツを抽象化するのに役立つフォールバックやデフォルトなどの便利な機能がたくさんあります。

このようなシステムが引き起こす可能性のあるメンテナンスの負担は別として、このソリューションは実際には、面倒というよりも洗練されたものに見えます。

申し訳ありませんが、返信ではありません。私の 2c だけです。

于 2013-06-27T00:32:15.777 に答える
2

ブランディングが完全にテキストの変更で構成されている場合、I18n 機能を使用することは理にかなっていると思います。または、ブランドごとに異なる設定を含む個別の構成ファイルをセットアップし、これらの構成設定を使用してアプリの表示/動作を変更することもできます。I18n と構成ファイルの組み合わせも機能します。それが最善の方法かどうかはわかりませんが、効果的であることが証明されています。

于 2013-06-26T18:57:06.907 に答える