|
View:
New views
5 Messages
—
Rating Filter:
Alert me
|
|
|
base_language text does not show if translation is missingHi everyone!
Sorry to bother you with a rails newbee question but I can't get this right after a few hours... If a translation is missing, my application does not show the base_language text: With http://svn.globalize-rails.org/svn/globalize/trunk (installed on March 13 2008) In ./config/environment.rb I have include Globalize Globalize::DbTranslate.keep_translations_in_model = true Globalize::Locale.set_base_language('en-US') LOCALES = {'en' => 'en-US','fr' => 'fr-FR'}.freeze In ./app/controllers/application.rb I have class ApplicationController < ActionController::Base before_filter :set_locale private def set_locale default_locale = 'en-US' request_language = request.env['HTTP_ACCEPT_LANGUAGE'] request_language = request_language.nil? ? nil : request_language[/[^,;]+/] params_locale = params[:locale] if params[:locale] == 'en-US' or params[:locale] == 'fr-FR' @locale = params[:locale] || session[:locale] || request_language || default_locale session[:locale] = @locale begin Locale.set @locale rescue Locale.set default_locale end end end In ./app/models/category.rb I have class Category < ActiveRecord::Base translates :name, :description end I created my categories table with class CreateCategories < ActiveRecord::Migration def self.up create_table :categories do |t| t.string :name t.string :name_fr t.text :description t.text :description_fr t.timestamps end end def self.down drop_table :categories end end For example, if a name_fr is missing, Globalize does not show the default name. At best I have a blank and in the worth case I have an error, if I try to concatenate the category.name to another string... Someone can help? In advance, thank you very much. |
|
|
Re: base_language text does not show if translation is missingHi Tako,
I think you got mixed up with tutorials about alternative ways to store translations http://saimonmoore.net/2006/12/1/alternative-implementation-of-globalize-model-translations it works great, but requires to install the plugin, and make globalize work a bit differently, putting all the translations in the same table, as you did in your example. it's mostly useful to save DB queries (see saimon's blog) but it's still easier to use the standard globalize way, so just remove the "name_fr", "descrption_fr" from your model, keep your views & controller in the standard rails way, and you'll be able to translate & view the results simply by changing the locale. (do all this in the console first to check that it's all working) and don't forget to follow tips on Sven's blog http://www.artweb-design.de/2006/11/10/get-on-rails-with-globalize-comprehensive-writeup he saved my project when I needed to fix my routes and my caching. cheers julien Le 14 mars 08 à 10:16, tako a écrit : > > Hi everyone! > Sorry to bother you with a rails newbee question but I can't get > this right > after a few hours... > If a translation is missing, my application does not show the > base_language > text: > > With http://svn.globalize-rails.org/svn/globalize/trunk (installed > on March > 13 2008) > > In ./config/environment.rb I have > > include Globalize > Globalize::DbTranslate.keep_translations_in_model = true > Globalize::Locale.set_base_language('en-US') > LOCALES = {'en' => 'en-US','fr' => 'fr-FR'}.freeze > > In ./app/controllers/application.rb I have > > class ApplicationController < ActionController::Base > before_filter :set_locale > private > def set_locale > default_locale = 'en-US' > request_language = request.env['HTTP_ACCEPT_LANGUAGE'] > request_language = request_language.nil? ? nil : > request_language[/[^,;]+/] > params_locale = params[:locale] if params[:locale] == 'en-US' or > params[:locale] == 'fr-FR' > > @locale = params[:locale] || session[:locale] || request_language > || > default_locale > session[:locale] = @locale > begin > Locale.set @locale > rescue > Locale.set default_locale > end > end > end > > In ./app/models/category.rb I have > > class Category < ActiveRecord::Base > translates :name, :description > end > > I created my categories table with > > class CreateCategories < ActiveRecord::Migration > def self.up > create_table :categories do |t| > t.string :name > t.string :name_fr > t.text :description > t.text :description_fr > > t.timestamps > end > end > > def self.down > drop_table :categories > end > end > > For example, if a name_fr is missing, Globalize does not show the > default > name. At best I have a blank and in the worth case I have an error, > if I try > to concatenate the category.name to another string... > Someone can help? > In advance, thank you very much. > > > -- > View this message in context: http://www.nabble.com/base_language-text-does-not-show-if-translation-is-missing-tp16047003s17045p16047003.html > Sent from the Globalize-rails.org mailing list archive at Nabble.com. > |
|
|
Re: base_language text does not show if translation is missingHi Julien, thanks for your answer...
But I really thought that this functionality was built in Globalize 1.2 as announced on the globalize website ------------- from http://www.globalize-rails.org/globalize/ Besides being compatible with the latest shiny & jaw-dropping Ruby on Rails 1.2 release this Globalize release adds two new major features: alternative way of storing ModelTranslations in the model table namespaced ViewTranslations ------------ Are you sure it requires the plugin? Moreover, when I have a translation (name_fr) for my category, it shows it perfectly on locale change. It is only when I have no translation that I get the problem... I'll reverse to the 'classic' way of storing translations only if I can't find a solution to this...
|
|
|
Re: base_language text does not show if translation is missingOk, I finally got the solution by the rDoc:
When using this mechanism the following option is available: :base_as_default e.g. class Product translates :name, :base_as_default => true end Set to true (default is false), when you switch to a non-base locale, localized attributes will return the base locale‘s value rather than nil if no translation exists for that attribute. e.g. product = Product.new Locale.set("en_US") product.name = guitar Locale.set("es_ES") #With :base_as_default => true product.name #=> guitar #With :base_as_default => false product.name #=> nil Then: product.name = guitarra Locale.set("en_US") product.name #=> guitar Locale.set("es_ES") product.name #=> guitarra
|
|
|
Re: base_language text does not show if translation is missingHi Tako,
if follow the instructions here, the "new feature" is actually a hack, that requires some modifications or installing a plugin. http://saimonmoore.net/2006/12/1/alternative-implementation-of-globalize-model-translations if it's exactly what you want, then have a look at my blog, http://www.yabo-concept.com/ it's veeeeeery empty for the moment, just 2 articles, and guess what, the latest one is just about that implementation, I had a hard time, but really needed it. (at first I thought you just wanted to get started with globalize) I have to update my blog with my latest work, because there are still some issues with it, I also modified the plugin because it conflicts with will_paginate, just added ActiveRecord::Base.send(:extend, LocalizeAlternative::LocalizeModels) to the init.rb... I'm not expert enough to explain exactly why, but it works (original plugin is here http://www.saimonmoore.net/assets/2006/12/11/localize_models.tar.gz) a bit in a rush now... hope that helps, I had such a hard time to get globalize to work the way I want, I really wanna share this, because I'm finally able to use standard globalize translation, model translation, fragment caching and ferret search together... cheers julien Le 14 mars 08 à 14:14, tako a écrit : > > Hi Julien, thanks for your answer... > But I really thought that this functionality was built in Globalize > 1.2 as > announced on the globalize website > ------------- > from http://www.globalize-rails.org/globalize/ > http://www.globalize-rails.org/globalize/ > > Besides being compatible with the latest shiny & jaw-dropping Ruby > on Rails > 1.2 release this Globalize release adds two new major features: > > alternative way of storing ModelTranslations in the model table > namespaced ViewTranslations > ------------ > > Are you sure it requires the plugin? > > Moreover, when I have a translation (name_fr) for my category, it > shows it > perfectly on locale change. It is only when I have no translation > that I get > the problem... > > I'll reverse to the 'classic' way of storing translations only if I > can't > find a solution to this... > > > Julien Ramel wrote: >> >> Hi Tako, >> >> >> I think you got mixed up with tutorials about alternative ways to >> store translations >> http://saimonmoore.net/2006/12/1/alternative-implementation-of-globalize-model-translations >> >> it works great, but requires to install the plugin, and make >> globalize >> work a bit differently, putting all the translations >> in the same table, as you did in your example. >> >> it's mostly useful to save DB queries (see saimon's blog) but it's >> still easier to use the standard globalize way, so just >> remove the "name_fr", "descrption_fr" from your model, keep your >> views & controller in the standard rails way, >> and you'll be able to translate & view the results simply by changing >> the locale. >> (do all this in the console first to check that it's all working) >> >> and don't forget to follow tips on Sven's blog >> http://www.artweb-design.de/2006/11/10/get-on-rails-with-globalize-comprehensive-writeup >> he saved my project when I needed to fix my routes and my caching. >> >> cheers >> >> julien >> >> >> >> >> >> >> >> Le 14 mars 08 à 10:16, tako a écrit : >> >>> >>> Hi everyone! >>> Sorry to bother you with a rails newbee question but I can't get >>> this right >>> after a few hours... >>> If a translation is missing, my application does not show the >>> base_language >>> text: >>> >>> With http://svn.globalize-rails.org/svn/globalize/trunk (installed >>> on March >>> 13 2008) >>> >>> In ./config/environment.rb I have >>> >>> include Globalize >>> Globalize::DbTranslate.keep_translations_in_model = true >>> Globalize::Locale.set_base_language('en-US') >>> LOCALES = {'en' => 'en-US','fr' => 'fr-FR'}.freeze >>> >>> In ./app/controllers/application.rb I have >>> >>> class ApplicationController < ActionController::Base >>> before_filter :set_locale >>> private >>> def set_locale >>> default_locale = 'en-US' >>> request_language = request.env['HTTP_ACCEPT_LANGUAGE'] >>> request_language = request_language.nil? ? nil : >>> request_language[/[^,;]+/] >>> params_locale = params[:locale] if params[:locale] == 'en-US' or >>> params[:locale] == 'fr-FR' >>> >>> @locale = params[:locale] || session[:locale] || request_language >>> || >>> default_locale >>> session[:locale] = @locale >>> begin >>> Locale.set @locale >>> rescue >>> Locale.set default_locale >>> end >>> end >>> end >>> >>> In ./app/models/category.rb I have >>> >>> class Category < ActiveRecord::Base >>> translates :name, :description >>> end >>> >>> I created my categories table with >>> >>> class CreateCategories < ActiveRecord::Migration >>> def self.up >>> create_table :categories do |t| >>> t.string :name >>> t.string :name_fr >>> t.text :description >>> t.text :description_fr >>> >>> t.timestamps >>> end >>> end >>> >>> def self.down >>> drop_table :categories >>> end >>> end >>> >>> For example, if a name_fr is missing, Globalize does not show the >>> default >>> name. At best I have a blank and in the worth case I have an error, >>> if I try >>> to concatenate the category.name to another string... >>> Someone can help? >>> In advance, thank you very much. >>> >>> >>> -- >>> View this message in context: >>> http://www.nabble.com/base_language-text-does-not-show-if-translation-is-missing-tp16047003s17045p16047003.html >>> Sent from the Globalize-rails.org mailing list archive at >>> Nabble.com. >>> >> >> >> > > -- > View this message in context: http://www.nabble.com/base_language-text-does-not-show-if-translation-is-missing-tp16047003s17045p16048010.html > Sent from the Globalize-rails.org mailing list archive at Nabble.com. > |
| Free embeddable forum powered by Nabble | Forum Help |