noosfero | Translation double quote not escaped (#219)

Rodrigo Souto gitlab at mg.gitlab.com
Fri Sep 30 17:02:56 BRT 2016


New Issue was created.

Issue 219: https://gitlab.com/noosfero/noosfero/issues/219
Author:    Rodrigo Souto
Assignee:  Rodrigo Souto

Not escaping the double quote (") on a to-be-translated string causes the following error:

```
TypeError (can't convert Hash into Float):
  /usr/lib/ruby/vendor_ruby/fast_gettext/vendor/string.rb:70:in `%'
  /usr/lib/ruby/vendor_ruby/fast_gettext/vendor/string.rb:70:in `%'
  app/models/approve_article.rb:133:in `task_finished_message'
  app/mailers/task_mailer.rb:37:in `generic_message'
  /usr/lib/ruby/vendor_ruby/abstract_controller/base.rb:198:in `process_action'
  /usr/lib/ruby/vendor_ruby/abstract_controller/callbacks.rb:20:in `block in process_action'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:88:in `__run_callbacks__'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:778:in `_run_process_action_callbacks'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:81:in `run_callbacks'
  /usr/lib/ruby/vendor_ruby/abstract_controller/callbacks.rb:19:in `process_action'
  /usr/lib/ruby/vendor_ruby/abstract_controller/base.rb:137:in `process'
  /usr/lib/ruby/vendor_ruby/action_view/rendering.rb:30:in `process'
  /usr/lib/ruby/vendor_ruby/action_mailer/base.rb:596:in `block in process'
  /usr/lib/ruby/vendor_ruby/active_support/notifications.rb:164:in `block in instrument'
  /usr/lib/ruby/vendor_ruby/active_support/notifications/instrumenter.rb:20:in `instrument'
  /usr/lib/ruby/vendor_ruby/active_support/notifications.rb:164:in `instrument'
  /usr/lib/ruby/vendor_ruby/action_mailer/base.rb:593:in `process'
  /usr/lib/ruby/vendor_ruby/action_mailer/base.rb:584:in `initialize'
  /usr/lib/ruby/vendor_ruby/action_mailer/message_delivery.rb:25:in `new'
  /usr/lib/ruby/vendor_ruby/action_mailer/message_delivery.rb:25:in `__getobj__'
  /usr/lib/ruby/vendor_ruby/action_mailer/message_delivery.rb:34:in `message'
  /usr/lib/ruby/vendor_ruby/action_mailer/message_delivery.rb:85:in `deliver_now'
  /usr/lib/ruby/vendor_ruby/action_mailer/message_delivery.rb:105:in `deliver'
  app/models/task.rb:360:in `send_notification'
  app/models/task.rb:96:in `block in finish'
  /usr/lib/ruby/vendor_ruby/active_record/connection_adapters/abstract/database_statements.rb:213:in `block in transaction'
  /usr/lib/ruby/vendor_ruby/active_record/connection_adapters/abstract/transaction.rb:184:in `within_new_transaction'
  /usr/lib/ruby/vendor_ruby/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction'
  /usr/lib/ruby/vendor_ruby/active_record/transactions.rb:220:in `transaction'
  /usr/lib/ruby/vendor_ruby/active_record/transactions.rb:277:in `transaction'
  app/models/task.rb:92:in `finish'
  app/controllers/my_profile/tasks_controller.rb:55:in `block in close'
  /usr/lib/ruby/vendor_ruby/action_controller/metal/strong_parameters.rb:185:in `each_pair'
  /usr/lib/ruby/vendor_ruby/action_controller/metal/strong_parameters.rb:185:in `each_pair'
  app/controllers/my_profile/tasks_controller.rb:49:in `close'
  /usr/lib/ruby/vendor_ruby/action_controller/metal/implicit_render.rb:4:in `send_action'
  /usr/lib/ruby/vendor_ruby/abstract_controller/base.rb:198:in `process_action'
  /usr/lib/ruby/vendor_ruby/action_controller/metal/rendering.rb:10:in `process_action'
  /usr/lib/ruby/vendor_ruby/abstract_controller/callbacks.rb:20:in `block in process_action'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:117:in `call'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:117:in `call'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:555:in `block (2 levels) in compile'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:505:in `call'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:505:in `call'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:498:in `block (2 levels) in around'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:313:in `call'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:313:in `block (2 levels) in halting'
  lib/authenticated_system.rb:48:in `user_set_current'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:432:in `block in make_lambda'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:312:in `call'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:312:in `block in halting'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:497:in `call'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:497:in `block in around'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:505:in `call'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:505:in `call'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:92:in `__run_callbacks__'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:778:in `_run_process_action_callbacks'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:81:in `run_callbacks'
  /usr/lib/ruby/vendor_ruby/abstract_controller/callbacks.rb:19:in `process_action'
  /usr/lib/ruby/vendor_ruby/action_controller/metal/rescue.rb:29:in `process_action'
  /usr/lib/ruby/vendor_ruby/action_controller/metal/instrumentation.rb:32:in `block in process_action'
  /usr/lib/ruby/vendor_ruby/active_support/notifications.rb:164:in `block in instrument'
  /usr/lib/ruby/vendor_ruby/active_support/notifications/instrumenter.rb:20:in `instrument'
  /usr/lib/ruby/vendor_ruby/active_support/notifications.rb:164:in `instrument'
  /usr/lib/ruby/vendor_ruby/action_controller/metal/instrumentation.rb:30:in `process_action'
  /usr/lib/ruby/vendor_ruby/action_controller/metal/params_wrapper.rb:250:in `process_action'
  /usr/lib/ruby/vendor_ruby/active_record/railties/controller_runtime.rb:18:in `process_action'
  /usr/lib/ruby/vendor_ruby/abstract_controller/base.rb:137:in `process'
  /usr/lib/ruby/vendor_ruby/action_view/rendering.rb:30:in `process'
  /usr/lib/ruby/vendor_ruby/action_controller/metal.rb:196:in `dispatch'
  /usr/lib/ruby/vendor_ruby/action_controller/metal/rack_delegation.rb:13:in `dispatch'
  /usr/lib/ruby/vendor_ruby/action_controller/metal.rb:237:in `block in action'
  /usr/lib/ruby/vendor_ruby/action_dispatch/routing/route_set.rb:74:in `call'
  /usr/lib/ruby/vendor_ruby/action_dispatch/routing/route_set.rb:74:in `dispatch'
  /usr/lib/ruby/vendor_ruby/action_dispatch/routing/route_set.rb:43:in `serve'
  /usr/lib/ruby/vendor_ruby/action_dispatch/journey/router.rb:43:in `block in serve'
  /usr/lib/ruby/vendor_ruby/action_dispatch/journey/router.rb:30:in `each'
  /usr/lib/ruby/vendor_ruby/action_dispatch/journey/router.rb:30:in `serve'
  /usr/lib/ruby/vendor_ruby/action_dispatch/routing/route_set.rb:815:in `call'
  lib/noosfero/multi_tenancy.rb:33:in `call'
  /usr/lib/ruby/vendor_ruby/rack/etag.rb:24:in `call'
  /usr/lib/ruby/vendor_ruby/rack/conditionalget.rb:38:in `call'
  /usr/lib/ruby/vendor_ruby/rack/head.rb:13:in `call'
  /usr/lib/ruby/vendor_ruby/action_dispatch/middleware/params_parser.rb:27:in `call'
  /usr/lib/ruby/vendor_ruby/action_dispatch/middleware/flash.rb:260:in `call'
  /usr/lib/ruby/vendor_ruby/rack/session/abstract/id.rb:225:in `context'
  /usr/lib/ruby/vendor_ruby/rack/session/abstract/id.rb:220:in `call'
  /usr/lib/ruby/vendor_ruby/action_dispatch/middleware/cookies.rb:560:in `call'
  vendor/plugins/noosfero_caching/init.rb:38:in `call'
  /usr/lib/ruby/vendor_ruby/active_record/query_cache.rb:36:in `call'
  /usr/lib/ruby/vendor_ruby/active_record/connection_adapters/abstract/connection_pool.rb:653:in `call'
  /usr/lib/ruby/vendor_ruby/action_dispatch/middleware/callbacks.rb:29:in `block in call'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:88:in `__run_callbacks__'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:778:in `_run_call_callbacks'
  /usr/lib/ruby/vendor_ruby/active_support/callbacks.rb:81:in `run_callbacks'
  /usr/lib/ruby/vendor_ruby/action_dispatch/middleware/callbacks.rb:27:in `call'
  /usr/lib/ruby/vendor_ruby/action_dispatch/middleware/remote_ip.rb:78:in `call'
  /usr/lib/ruby/vendor_ruby/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
  /usr/lib/ruby/vendor_ruby/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  /usr/lib/ruby/vendor_ruby/rails/rack/logger.rb:38:in `call_app'
  /usr/lib/ruby/vendor_ruby/rails/rack/logger.rb:20:in `block in call'
  /usr/lib/ruby/vendor_ruby/active_support/tagged_logging.rb:68:in `block in tagged'
  /usr/lib/ruby/vendor_ruby/active_support/tagged_logging.rb:26:in `tagged'
  /usr/lib/ruby/vendor_ruby/active_support/tagged_logging.rb:68:in `tagged'
  /usr/lib/ruby/vendor_ruby/rails/rack/logger.rb:20:in `call'
  /usr/lib/ruby/vendor_ruby/action_dispatch/middleware/request_id.rb:21:in `call'
  /usr/lib/ruby/vendor_ruby/rack/methodoverride.rb:22:in `call'
  /usr/lib/ruby/vendor_ruby/rack/contrib/runtime.rb:18:in `call'
  /usr/lib/ruby/vendor_ruby/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
  /usr/lib/ruby/vendor_ruby/action_dispatch/middleware/static.rb:116:in `call'
  /usr/lib/ruby/vendor_ruby/rack/contrib/sendfile.rb:105:in `call'
  /usr/lib/ruby/vendor_ruby/rails/engine.rb:518:in `call'
  /usr/lib/ruby/vendor_ruby/rails/application.rb:165:in `call'
  /usr/lib/ruby/vendor_ruby/rails/railtie.rb:194:in `public_send'
  /usr/lib/ruby/vendor_ruby/rails/railtie.rb:194:in `method_missing'
  /usr/lib/ruby/vendor_ruby/rack/builder.rb:153:in `call'
  /usr/lib/ruby/vendor_ruby/rack/cascade.rb:33:in `block in call'
  /usr/lib/ruby/vendor_ruby/rack/cascade.rb:24:in `each'
  /usr/lib/ruby/vendor_ruby/rack/cascade.rb:24:in `call'
  /usr/lib/ruby/vendor_ruby/rack/cors.rb:80:in `call'
  /usr/lib/ruby/vendor_ruby/unicorn/http_server.rb:576:in `process_client'
  lib/noosfero/scheduler/defer.rb:86:in `process_client'
  /usr/lib/ruby/vendor_ruby/unicorn/http_server.rb:670:in `worker_loop'
  /usr/lib/ruby/vendor_ruby/unicorn/http_server.rb:525:in `spawn_missing_workers'
  /usr/lib/ruby/vendor_ruby/unicorn/http_server.rb:140:in `start'
  /usr/bin/unicorn_rails:209:in `<main>'
```

Here is an example: `_('Your request for publishing the article "%{article}" was approved.') % {:article => name}`
It should be: `_('Your request for publishing the article \"%{article}\" was approved.') % {:article => name}`
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20160930/968f9a9a/attachment.html>


More information about the Noosfero-dev mailing list