私はユーザーが複数の言語で投稿を入力できる方法を探しています。次に、ユーザーの言語用のもののみを表示し、そうでなければ、デフォルトまたはリストされたデフォルトにフォールバックします。ruby on railsは複数の言語で投稿を一度に書くことができます
私が思いついたことは、複数の投稿をそれぞれ言語タグで作成して、リクエストされた言語で投稿が存在し、デフォルトを返さない場合にチェックを行うことです。
もっと良い解決策はありますか?事前に
おかげRailsの中
私はユーザーが複数の言語で投稿を入力できる方法を探しています。次に、ユーザーの言語用のもののみを表示し、そうでなければ、デフォルトまたはリストされたデフォルトにフォールバックします。ruby on railsは複数の言語で投稿を一度に書くことができます
私が思いついたことは、複数の投稿をそれぞれ言語タグで作成して、リクエストされた言語で投稿が存在し、デフォルトを返さない場合にチェックを行うことです。
もっと良い解決策はありますか?事前に
おかげRailsの中
使用している場合。モデルのフィールドを翻訳し、この変換をデータベースに保存することができます。
これは、国際化、現在のロケールで動作します:あなたが一度に多くの言語で複数のポストの入力をレンダリングするために、この構文を使用することができます例えば
I18n.locale = :en
post.title = "english_title"
I18n.locale = :fr
post.title = "french_title"
post.save
I18n.locale = :en
post.title #=> "english_title"
I18n.locale = :fr
post.title #=> "french_title"
:私が実装しようとした
<% Globalize.with_locale(:fr) do %>
<%= render "post_partial" %>
<% end %>
<% Globalize.with_locale(:en) do %>
<%= render "post_partial" %>
<% end %>
翻訳は、一般的にthe i18n
libraryを利用しています。 (「18」は「国際化」のスキップされた18文字を表しています)
これは非常に大きなトピックですドキュメンテーション。
しかし、簡単に言えば、独自の言語ルックアップツールを実装することで、ここで "ホイールを再発明"する必要はありません。 i18n
翻訳in the databaseを保存して、ログインしているユーザーのロケールに従ってそれらを取得することができます。
私はI18nライブラリ全体とその使い方を知っています。これまでのところ、このプロジェクトで使ってきました。しかし私がやろうとしているのは、ユーザーが多くの言語でテキストを投稿できるようにすることです。どうもありがとうございます。 – zeitue
...そして、私はあなたがこのために 'i18n'を使うことができると言っています! UIデザインによっては、各翻訳を正しい場所に保存するためにいくつかの追加のバックエンドロジックが必要な場合がありますが、問題は 'i18n'でも簡単に解決できます。 –
ええ、私はi18nがこれを行うことができると理解していますが、私はそれを行う方法を知らない。 – zeitue
チェックアウト多言語-hstoreの宝石をあなたはあなたが決定的にGlobalize宝石を使用する必要がありますPostgresの
同様のプロジェクトであり、実装についてのアイディアを持っていました。あなたはそれはあなたがユーザレコードにユーザーの優先言語を格納し、この
EasyTranslate.translate(@post.body, :to => current_user.language)
を行うことができますパーソナライズされたようにするには、ポスト本体
EasyTranslate.translate(@post.body, :to => :russian)
を変換するために、この文を使用することができます簡単に変換宝石(https://github.com/seejohnrun/easy_translate)を使用して
postgreSQLを使用している場合は、hstore_translate gemを使用できます。 hstoreモジュールは、データベース内の単一の値にキーと値のペアを格納するhstoreデータ型を実装します。
gemfile:移行中gem 'hstore_translate'
class Post < ActiveRecord::Base
translates :title, :body
end
:あなたのコンソールで
class CreatePosts < ActiveRecord::Migration
def up
create_table :posts do |t|
t.column :title_translations, 'hstore'
t.column :body_translations, 'hstore'
t.timestamps
end
end
def down
drop_table :posts
end
end
:
I18n.locale = :en
post.title
があなたのapplication.rbにフォールバックを有効にします。 config.i18n.fallbacks = true
これはユーザーが実際に複数の言語で入力できるため、私が探しているようです。私はこれをフォームで行うことができると考えています。ありがとう – zeitue