Defect #5608
broken with i18n 0.4.0
Status: | Closed | Start date: | 2010-05-28 | |
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | % Done: | 100% | ||
Category: | Translations | |||
Target version: | 1.0.2 | |||
Resolution: | Fixed | Affected version: |
Description
- Rails 2.3.5
- Redmine: svn/branches/0.9-stable (r3742), production mode
- Ruby: 1.8.7, Ruby Enterprise Edition
Processing WelcomeController#index (for ####### at 2010-05-28 11:21:46) [GET] Parameters: {"action"=>"index", "controller"=>"welcome"} Rendering template within layouts/base Rendering welcome/index ActionView::TemplateError (missing interpolation argument in "%m/%{count}/%Y %I:%M %p" ({:object=>"2010-05-17 18:37:48 +0900"} given)) on line #22 of app/views/welcome/index.rhtml: 19: <ul> 20: <% for project in @projects %> 21: <li> 22: <%= link_to h(project.name), :controller => 'projects', :action => 'show', :id => project %> (<%= format_time(project.created_on) %>) 23: <%= textilizable project.short_description, :project => project %> 24: </li> 25: <% end %> /opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/i18n-0.4.0/lib/i18n/backend/base.rb:177:in `interpolate_without_deprecated_syntax' /opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/i18n-0.4.0/lib/i18n/backend/base.rb:48:in `translate' /opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/i18n-0.4.0/lib/i18n.rb:152:in `t' /opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/i18n-0.4.0/lib/i18n/backend/base.rb:61:in `localize' /opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/i18n-0.4.0/lib/i18n.rb:231:in `l' lib/redmine/i18n.rb:48:in `format_time'
I'm not sure it's a redmine's bug - i18n 0.3.7 works. config.gem should be more specific.
Related issues
Associated revisions
History
#1
Updated by Chulki Lee over 10 years ago
Here is a patch for source:trunk/lib/redmine/i18n.rb
line 48
- Setting.time_format.blank? ? ::I18n.l(local, :format => (include_date ? :default : :time)) : + Setting.time_format.blank? ? l(local, :format => (include_date ? :default : :time)) :
It works with i18n 0.4.1
#2
Updated by Martin Frost over 10 years ago
The same error will still occur when using format_date, and this patch results in "missing translation" errors.
#3
Updated by Martin Frost over 10 years ago
A better solution would be to actually supply an interpolation variable, such as count.
There should probably be a better interpolation variable, but that's the first one I found, and it seems to work for me.
Here's a diff with what I made to make it work:
source:trunk/lib/redmine/i18n.rb
line 40:
- Setting.date_format.blank? ? ::I18n.l(date.to_date) : date.strftime(Setting.date_format) + Setting.date_format.blank? ? ::I18n.l(date.to_date, :count => date.day) : date.strftime(Setting.date_format)
line 48:
- Setting.time_format.blank? ? ::I18n.l(local, :format => (include_date ? :default : :time)) : + Setting.time_format.blank? ? ::I18n.l(local, :count => local.day, :format => (include_date ? :default : :time)) :
#4
Updated by Jean-Baptiste Barth over 10 years ago
Just noticed the same bug, but there's also a depreciation warning about the way variables are passed to i18n :
The {{key}} interpolation syntax in I18n messages is deprecated. Please use %{key} instead. /var/lib/gems/1.8/gems/i18n-0.4.1/lib/i18n/backend/base.rb:162:in `interpolate_without_deprecated_syntax'
Maybe both should be fixed the same time ?
#5
Updated by Martin Frost over 10 years ago
Jean-Baptiste Barth wrote:
Just noticed the same bug, but there's also a depreciation warning about the way variables are passed to i18n : [...]
Maybe both should be fixed the same time ?
That sounds like a good idea.
#6
Updated by Gregor Schmidt over 10 years ago
As far as I can tell, i18n 0.4.x is incompatible with Rails 2.3.5 - it could work with 2.3.6 though (http://github.com/svenfuchs/i18n/issues/issue/20). Furthermore it seems to be impossible to make Rails/Redmine ignore the newer gem and use the bundled version instead (http://stackoverflow.com/questions/2975532/have-rails-2-3-x-ignore-the-i18n-gem) - at least I could not find a working solution.
You should try to remove the i18n gem from your environment by using bundler or rvm.
The deprecation warnings should be tackled, once the update to Rails 2.3.6+ or 3.x is in progress.
#7
Updated by Chris Collins over 10 years ago
This is actually because activesupport calls in the gem itself, and does so rather loosely.
It can be fixed by editing vendor/rails/activesupport/lib/active_support/vendor.rb and changing the: "gem 'i18n'..." line to include: ,"< 0.4.0".
This will prevent redmine's activesupport from pulling in the i18n 0.4 family which triggers this bug.
#8
Updated by Jérémy Lal over 10 years ago
- Assignee set to Eric Davis
Martin Frost wrote:
A better solution would be to actually supply an interpolation variable, such as count.
There should probably be a better interpolation variable, but that's the first one I found, and it seems to work for me.Here's a diff with what I made to make it work:
I also got that bug, and Martin's solution works.
It would be great to apply that patch for 1.0.1
Jérémy
#9
Updated by Piotr Mąsior over 10 years ago
Experienced this bug recently with passenger and only working solution is Martin's patch
#10
Updated by Martin Frost over 10 years ago
Oh, and by the way, i18n 0.4.1 solved some other issues for me, so it would probably be a good idea to make redmine require that version and make it work.
0.4.1 has deprecated the {{key}} syntax as well. The new syntax is %{key}, so those changes will have to be made to all locale files.
#11
Updated by Eric Davis over 10 years ago
Martin Frost wrote:
0.4.1 has deprecated the {{key}} syntax as well. The new syntax is %{key}, so those changes will have to be made to all locale files.
That's cute. Anyone up for writing a script to update all of the locale files?
#12
Updated by Jean-Baptiste Barth over 10 years ago
- Assignee changed from Eric Davis to Jean-Baptiste Barth
Eric Davis wrote:
That's cute. Anyone up for writing a script to update all of the locale files?
I can. Do you want it before 1.0.1 ? It may be a bit risky to change the gem version 7 days before release...
Anyway, I wonder why they chose this %{}
syntax, and not the ruby interpolation one #{}
. We used to have two diverging syntaxes, and now we have... two new ones + (bonus!) an important rewrite. Anyone knows ?
#13
Updated by Martin Frost over 10 years ago
Jean-Baptiste Barth wrote:
Eric Davis wrote:
That's cute. Anyone up for writing a script to update all of the locale files?
I can. Do you want it before 1.0.1 ? It may be a bit risky to change the gem version 7 days before release...
Anyway, I wonder why they chose this
%{}
syntax, and not the ruby interpolation one#{}
. We used to have two diverging syntaxes, and now we have... two new ones + (bonus!) an important rewrite. Anyone knows ?
It might be that if they were to use #{}
, then people would believe they could input arbitrary ruby code, and they want to make a distinction from that. This is just a wild guess on my part though.
#14
Updated by Jean-Baptiste Barth over 10 years ago
Martin Frost wrote:
It might be that if they were to use
#{}
, then people would believe they could input arbitrary ruby code, and they want to make a distinction from that. This is just a wild guess on my part though.
Sounds like a good reason :)
#15
Updated by Christof Spies over 10 years ago
Workaround:
rake VERSION=2.3.5 rails:freeze:gems
vim vendor/rails/activesupport/lib/active_support/vendor.rb
#24
gem 'i18n', '< 0.4.0'
#16
Updated by Christof Spies over 10 years ago
better:
gem 'i18n', '>= 0.1.3', '< 0.4.0'
#17
Updated by John Lovell over 10 years ago
Thanks Christof, this fixed the issue for me.
#18
Updated by Jean-Baptiste Barth over 10 years ago
- File locales_update.rb
added
- Status changed from New to 7
- % Done changed from 0 to 30
- Affected version (unused) changed from 0.9.4 to devel
- Affected version deleted (
0.9.4)
Eric: here's a script for updating locale files with the new syntax. Seems it works well, but if some people want to test it it would be fine (especially people with non-ascii locales..).
But it's not sufficient: there are other deprecation warnings because we have some "%d"s in our locales for date formatting.
I'll take a look at that and assign the issue back to you with patches when everything is ready so that you can decide when we move.
#19
Updated by Felix Schäfer over 10 years ago
For anybody interested: I have a working patch in #6428 to make redmine work with i18n-0.4, big thanks to Martin Frost for the inspiration.
#20
Updated by Eric Davis over 10 years ago
- Category set to Translations
- Status changed from 7 to Resolved
- Target version set to 1.0.2
- % Done changed from 30 to 100
- Resolution set to Fixed
I've added Felix's patch from #6428 to work around Rails and i18n 4.x. This should at least let Redmine run, with quite a few warnings that something is wrong.
When we get Redmine 1.1.0 ready, we will upgrade to the latest Rails 2.3.x or Rails 3.x so this patch can be removed then.
#21
Updated by Eric Davis over 10 years ago
- Status changed from Resolved to Closed
Merged into 1.0-stable
#22
Updated by Mark Suman over 10 years ago
Eric Davis wrote:
Merged into 1.0-stable
Thank you. I pulled the change you merged and it fixed the issue for me.
#23
Updated by Sean Murphy about 10 years ago
I just created a Ubuntu 10.10 server, installed redmine via apt-get which shows redmine as the latest stable 1.0 version but I still ran into this error. Using Martin's suggestion in #note-3 did the trick though.
#24
Updated by dye jarhoo over 6 years ago
Hello coming back from 2014,
using debian Squeeze latest repo
This patch NOT FIX on redmine package(1.0.1-2)
BTW, using this patch with webrick it logs
warn "The {{key}} interpolation syntax in I18n messages is deprecated. Please use %{key} instead.\nDowngrade your i18n gem to 0.3.7 (everything above must be deinstalled) to remove this warning, see http://www.redmine.org/issues/5608 for more information."
FYI:
NOT FIX means:
NOT FIX only appears @hostname/settings
rails 2.3.5
ruby 1.8.7
i18n 0.6.11
acitvesupport-3.2.19(which depend on i18n >0.6
EDIT: for formate
#25
Updated by Holger Just over 6 years ago
@dye jarhoo: Redmine 1.0 is not supported here anymore. You could open a bug on Debian's issue tracker but I doubt it will ever be fixed given that Squeeze is oldstable already and the next version after that is about to be released soon. Thus, you should just update to a newer version of Redmine.