diff options
3 files changed, 18 insertions, 4 deletions
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/i18n/I18nManager.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/i18n/I18nManager.java index 8438b706622..c66ae9c134a 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/i18n/I18nManager.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/i18n/I18nManager.java @@ -138,11 +138,14 @@ public final class I18nManager implements I18n, ServerExtension, BatchExtension } } - public String message(final Locale locale, final String key, final String defaultText, final Object... objects) { + public String message(final Locale locale, final String key, final String defaultText, final Object... objects) + { String result = defaultText; try { String bundleBaseName = keys.get(key); if (bundleBaseName == null) { + if (result == null) + throw new MissingResourceException("UNKNOWN KEY : Key '" + key + "' not found in any bundle.", bundleBaseName, key); LOG.warn("UNKNOWN KEY : Key '{}' not found in any bundle. Default value '{}' is returned.", key, defaultText); unknownKeys.put(key, defaultText); } else { @@ -151,18 +154,24 @@ public final class I18nManager implements I18n, ServerExtension, BatchExtension String value = bundle.getString(key); if ("".equals(value)) { + if (result == null) + throw new MissingResourceException("VOID KEY : Key '" + key + "' (from bundle '" + bundleBaseName + "') returns a void value.", bundleBaseName, key); LOG.warn("VOID KEY : Key '{}' (from bundle '{}') returns a void value. Default value '{}' is returned.", new Object[]{key, bundleBaseName, defaultText}); } else { result = value; } } catch (MissingResourceException e) { + if (result == null) + throw e; LOG.warn("BUNDLE NOT LOADED : Failed loading bundle {} from classloader {}. Default value '{}' is returned.", new Object[]{ bundleBaseName, bundleClassLoader, defaultText}); } } } catch (Exception e) { LOG.error("Exception when retrieving I18n string.", e); + if (result == null) + throw new SonarException("Exception when retrieving I18n string.", e); } if (objects.length > 0) { diff --git a/sonar-server/src/main/webapp/WEB-INF/app/helpers/application_helper.rb b/sonar-server/src/main/webapp/WEB-INF/app/helpers/application_helper.rb index 9eddc51e56a..38000871ab7 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/helpers/application_helper.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/helpers/application_helper.rb @@ -56,8 +56,13 @@ module ApplicationHelper end # i18n - def message(key, default, *parameters) - Java::OrgSonarServerUi::JRubyFacade.getInstance().getI18nMessage(I18n.locale, key, default, parameters.to_java) + def message(key, options={}) + default = options[:default] + params = options[:params] + if params.nil? + params=[] + end + Java::OrgSonarServerUi::JRubyFacade.getInstance().getI18nMessage(I18n.locale, key, default, params.to_java) end # deprecated since 2.5. Use trend_icon() instead diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_layout.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_layout.html.erb index 5a09ff6a1f3..f9e160f2c3e 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_layout.html.erb +++ b/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_layout.html.erb @@ -14,7 +14,7 @@ » <a href="<%= ApplicationController.root_context -%>/sessions/logout">Log out</a> </li> <% else %> - <li><a href="<%= ApplicationController.root_context -%>/sessions/new"><%= message('app.view.layouts.layout.login', 'Log in') -%></a></li> + <li><a href="<%= ApplicationController.root_context -%>/sessions/new"><%= message('web.layouts.login', :default => 'Log {0}', :params => ['in']) -%></a></li> <% end %> <li><a href="<%= ApplicationController.root_context -%>/profiles">Configuration</a></li> </ol> |