Ruby on Rails/Devise フロントエンド、そして Backbone.js のアプリケーションがあります。app/views/layouts/application.html.erb で私はこれを持っています:
<head>
...
<script type="text/javascript">
I18n.locale = "<%= I18n.locale %>"
I18n.defaultLocale = "<%= I18n.default_locale %>"
</script>
ユーザーは自分のロケールを選択できます。さて、Ruby on Rails の部分では、アプリケーション コントローラーにこれがあります。
class ApplicationController
before_filter :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
def default_url_options(options={})
{ :locale => I18n.locale }
end
私が抱えている問題は、Backbone.js ピースが Ruby on Rails ピースからロケールを「取得」せず、ユーザーがロケールを再度選択する必要があることです。ユーザーがロケールを再度選択する必要がないように、Backbone.js ピースにロケールを「注入」するにはどうすればよいですか?
詳細: コメントの 1 つが正確です。Javascript コンソールは、Backbone.js ピースが Ruby on Rails/Devise からロケールを取得していないことを示しています。Javascript コンソールは、最初はデフォルトを示しています。どういうわけか、ロケールを Backbone.js に渡していません。