Come posso internazionalizzare dire una tabella di categorie (con una colonna del nome) in diverse lingue. Che ne dici di una tabella prodotti (composta da un nome e una colonna descrittiva). Qual è il modo migliore per internazionalizzare il contenuto di queste tabelle del database usando Ruby on Rails?Come internazionalizzare i contenuti su ruby on rails?
risposta
Avete dato un'occhiata a: http://guides.rubyonrails.org/i18n.html
Esso descrive in dettaglio come internazionalizzare la vostra applicazione e
"fornisce un quadro facile da usare ed estensibile per tradurre il vostro applicazione a una singola lingua personalizzata diversa dall'inglese o per fornendo supporto multilingue in l'applicazione. "
Alcuni link utili:
Se si desidera memorizzare i valori per le diverse lingue del db accanto alle guide standard i18n (yml), si potrebbe fare qualcosa di simile:
Prodotti campo nome della tabella:
- name_en
- name_fr
- name_nl
recuperare il valore corretto:
def i18n_db_value(object, attribute)
object.send("#{attribute.to_s}_#{I18n.locale}") if object
end
"memorizzare più versioni di contenuti nel modello e avere un sito "vs. "store solo una versione dei contenuti nel modello, ma hanno più siti"
Su Railscasts c'è un bell'articolo su, con una gemma chiamata Globalize3. Che solo consentono di impostare quali modelli saranno tradotti e gestire un tradurre le tabelle per ogni modello, e funziona proprio come i18n è quello di pagine statiche ...
Date un'occhiata
http://railscasts.com/episodes/338-globalize3?view=asciicast
È possibile sovrascrivere metodo "nome" nella categoria del modello, è possibile cercare la traduzione corretta in un'altra tabella.
In modo che, nella tabella categorie, si dovrebbe avere nel campo "Nome" la lingua predefinita tradotto, ad esempio "Altro". Quindi cerca "Altro" in una tabella come:
transtations table
en_text "Other" <--- You search this (default language)
es_text "Otros" ---> You retrun this
ca_text "Altres" ---> or this
# Category table
class Category < ActiveRecord::Base
def name
Translation.translate(read_attribute("name"))
end
end
# Your transltation model
class Translation < ActiveRecord::Base
def self.translate(text)
locale=I18n.locale
if locale!="en" # default locale: what is on the table "category"
trad=self.find_by_en_text(text)
if trad
return eval("trad.#{locale}_text")
end
end
return text
end
end
Tutti questi riferimenti non parlano del contenuto del database di traduzione ...come la gemma Globalize3 –