diff --git a/archiva-modules/archiva-web/archiva-webapp-js/pom.xml b/archiva-modules/archiva-web/archiva-webapp-js/pom.xml index f76175eae..e1ab376c4 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/pom.xml +++ b/archiva-modules/archiva-web/archiva-webapp-js/pom.xml @@ -36,6 +36,7 @@ /archiva true true + true @@ -544,6 +545,7 @@ ${project.build.directory}/appserver-base/conf/archiva.xml ${archiva.devMode} ${archiva.javascriptLog} + ${archiva.logMissingI18n} @@ -578,6 +580,7 @@ ${project.build.directory}/appserver-base/conf/archiva.xml ${archiva.devMode} ${archiva.javascriptLog} + ${archiva.logMissingI18n} @@ -610,6 +613,7 @@ ${project.build.directory}/appserver-base/conf/archiva.xml ${archiva.devMode} ${archiva.javascriptLog} + ${archiva.logMissingI18n} diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/api/DefaultRuntimeInfoService.java b/archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/api/DefaultRuntimeInfoService.java index cd58ddacd..44c9d1114 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/api/DefaultRuntimeInfoService.java +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/api/DefaultRuntimeInfoService.java @@ -20,6 +20,8 @@ package org.apache.archiva.webapp.ui.services.api; import org.apache.archiva.web.runtime.ArchivaRuntimeInfo; import org.apache.archiva.webapp.ui.services.model.ApplicationRuntimeInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import javax.inject.Inject; @@ -32,6 +34,8 @@ public class DefaultRuntimeInfoService implements RuntimeInfoService { + private Logger i18nLogger = LoggerFactory.getLogger( "archivaMissingi18n.logger" ); + private ArchivaRuntimeInfo archivaRuntimeInfo; @Inject @@ -49,4 +53,10 @@ public class DefaultRuntimeInfoService applicationRuntimeInfo.setVersion( this.archivaRuntimeInfo.getVersion() ); return applicationRuntimeInfo; } + + public Boolean logMissingI18n( String key ) + { + i18nLogger.info( "missing i18n key : '{}'", key ); + return Boolean.TRUE; + } } diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/api/RuntimeInfoService.java b/archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/api/RuntimeInfoService.java index 43f609e7a..b3055d9a7 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/api/RuntimeInfoService.java +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/api/RuntimeInfoService.java @@ -24,6 +24,7 @@ import org.codehaus.plexus.redback.authorization.RedbackAuthorization; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; /** @@ -38,4 +39,11 @@ public interface RuntimeInfoService @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) @RedbackAuthorization( noRestriction = true ) ApplicationRuntimeInfo getApplicationRuntimeInfo(); + + + @Path( "logMissingI18n" ) + @GET + @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @RedbackAuthorization( noRestriction = true ) + Boolean logMissingI18n( @QueryParam( "key" ) String key ); } diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/model/ApplicationRuntimeInfo.java b/archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/model/ApplicationRuntimeInfo.java index fb438a8c2..e6794bd35 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/model/ApplicationRuntimeInfo.java +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/model/ApplicationRuntimeInfo.java @@ -40,6 +40,8 @@ public class ApplicationRuntimeInfo private String copyrightRange; + private boolean logMissingI18n; + public ApplicationRuntimeInfo() { @@ -47,6 +49,8 @@ public class ApplicationRuntimeInfo this.javascriptLog = Boolean.getBoolean( "archiva.javascriptLog" ); + this.logMissingI18n = Boolean.getBoolean( "archiva.logMissingI18n" ); + this.copyrightRange = "2005 - " + Calendar.getInstance().get( Calendar.YEAR ); } @@ -110,6 +114,16 @@ public class ApplicationRuntimeInfo this.copyrightRange = copyrightRange; } + public boolean isLogMissingI18n() + { + return logMissingI18n; + } + + public void setLogMissingI18n( boolean logMissingI18n ) + { + this.logMissingI18n = logMissingI18n; + } + @Override public String toString() { @@ -121,6 +135,7 @@ public class ApplicationRuntimeInfo sb.append( ", buildNumber='" ).append( buildNumber ).append( '\'' ); sb.append( ", timestamp=" ).append( timestamp ); sb.append( ", copyrightRange='" ).append( copyrightRange ).append( '\'' ); + sb.append( ", logMissingI18n=" ).append( logMissingI18n ); sb.append( '}' ); return sb.toString(); } diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/jquery.i18n.properties-1.0.9.js b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/jquery.i18n.properties-1.0.9.js index cd99e0ac8..d8d3ae804 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/jquery.i18n.properties-1.0.9.js +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/jquery.i18n.properties-1.0.9.js @@ -52,7 +52,7 @@ $.i18n.properties = function(settings) { language: '', path: '', mode: 'vars', - cache: false, + cache: false, encoding: 'UTF-8', callback: null }; @@ -88,8 +88,12 @@ $.i18n.properties = function(settings) { */ $.i18n.prop = function(key /* Add parameters as function arguments as necessary */) { var value = $.i18n.map[key]; - if (value == null) + if (value == null) { + if (window.archivaRuntimeInfo.logMissingI18n){ + $.get('restServices/archivaUiServices/runtimeInfoService/logMissingI18n?key='+encodeURIComponent(key)); + } return '[' + key + ']'; + } // if(arguments.length < 2) // No arguments. // //if(key == 'spv.lbl.modified') {alert(value);}