Error #913
Some strings serialized as binary instead of unicode cause errors
0%
Description
Hi,
I have just plugged localizable 0.2.0 in my Redmine 1.4.4+dfsg1-2+deb7u1 (Debian Wheezy) with PostgreSQL as the backend. After adding translations some strings caused errors both on plugin's configuration page and on Redmine Issues page. I have used parts of localizable 0.3.0 to fix the configuration page:
diff -ur localizable.0.2.0/app/views/settings/_localizable.html.erb localizable.0.3.0/app/views/settings/_localizable.html.erb
--- localizable.0.2.0/app/views/settings/_localizable.html.erb 2012-06-12 01:06:01.000000000 +0200
+++ localizable.0.3.0/app/views/settings/_localizable.html.erb 2012-11-06 15:52:59.000000000 +0100
@@ -77,8 +77,8 @@
<tbody>
<%- @settings["locales"][element[:name]] = {} if @settings["locales"][element[:name]].nil? -%>
<%- element[:objects].each do |object| -%>
- <%- if type != object.type.to_s -%>
- <%- type = object.type.to_s -%>
+ <%- if type != object.class.to_s -%>
+ <%- type = object.class.to_s -%>
<tr>
<td colspan="<%= @settings["locales_to_translate"].size + 1 %>">
<b><em><%= l(type_labels[object.type.to_s.gsub(/CustomField/, "")]) %></em></b>
@@ -92,8 +92,8 @@
</td>
<%- @settings["locales_to_translate"].each do |locale| -%>
<td align="left">
- <input name="settings[locales][<%= element[:name] %>][<%= object.id %>][<%= locale %>]"
- value="<%= @settings["locales"][element[:name]][object.id.to_s][locale] %>" />
+ <input name="settings[locales][<%= element[:name] %>][<%= object.id %>][<%= locale.to_s.force_encoding("UTF-8") %>]"
+ value="<%= @settings["locales"][element[:name]][object.id.to_s][locale].to_s.force_encoding("UTF-8") %>" />
</td>
<%- end -%>
</tr>
But I was still getting errors (incompatible character encodings: ASCII-8BIT and UTF-8) on the Issues page. The patch attached fixes that problem as well.
The curious thing is that the mechanizm serializing my strings seems to be unstable. For example it would serialize 1-letter string "ą" (\xc4\x85) to a binary, but a string "Rozwiązanie" containing "ą" to a unicode string. One of strings causing problems because of being converted to binary (QsWCxIVk in base64) was "Błąd" (B\xc5\x82\xc4\x85d).
I do not know Ruby at all, so I am not sure if it was the correct way to fix that.
Files
No data to display