diff --git a/maven-plugin-report-plugin/pom.xml b/maven-plugin-report-plugin/pom.xml
index 7e87d5dd..d5425d28 100644
--- a/maven-plugin-report-plugin/pom.xml
+++ b/maven-plugin-report-plugin/pom.xml
@@ -100,6 +100,18 @@
org.codehaus.plexus
plexus-utils
+
+
+ org.codehaus.plexus
+ plexus-i18n
+ 1.0-beta-10
+
+
+ org.codehaus.plexus
+ plexus-component-api
+
+
+
diff --git a/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java b/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java
index 3816b4c5..525e22e9 100644
--- a/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java
+++ b/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java
@@ -23,13 +23,12 @@
import java.io.Reader;
import java.nio.file.Files;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Optional;
-import java.util.ResourceBundle;
+import org.apache.maven.doxia.markup.Markup;
import org.apache.maven.doxia.sink.Sink;
import org.apache.maven.doxia.tools.SiteTool;
import org.apache.maven.model.Plugin;
@@ -56,6 +55,7 @@
import org.apache.maven.tools.plugin.generator.PluginXdocGenerator;
import org.apache.maven.tools.plugin.util.PluginUtils;
import org.codehaus.plexus.configuration.PlexusConfigurationException;
+import org.codehaus.plexus.i18n.I18N;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.XmlStreamReader;
import org.codehaus.plexus.util.xml.Xpp3Dom;
@@ -120,6 +120,12 @@ public class PluginReport extends AbstractMavenReport {
@Component
private RuntimeInformation rtInfo;
+ /**
+ * Internationalization component.
+ */
+ @Component
+ private I18N i18n;
+
/**
* Path to enhanced plugin descriptor to generate the report from (must contain some XHTML values)
*
@@ -175,7 +181,7 @@ protected void executeReport(Locale locale) throws MavenReportException {
// Write the overview
PluginOverviewRenderer r = new PluginOverviewRenderer(
- getProject(), requirementsHistories, getSink(), pluginDescriptor, locale, hasExtensionsToLoad);
+ getSink(), i18n, locale, getProject(), requirementsHistories, pluginDescriptor, hasExtensionsToLoad);
r.render();
}
@@ -189,20 +195,29 @@ private PluginDescriptor extractPluginDescriptor() throws MavenReportException {
}
}
+ /**
+ * @param locale The locale
+ * @param key The key to search for
+ * @return The text appropriate for the locale.
+ */
+ private String getI18nString(Locale locale, String key) {
+ return i18n.getString("plugin-report", locale, "report.plugin." + key);
+ }
+
/**
* {@inheritDoc}
*/
@Override
- public String getDescription(Locale locale) {
- return getBundle(locale).getString("report.plugin.description");
+ public String getName(Locale locale) {
+ return getI18nString(locale, "name");
}
/**
* {@inheritDoc}
*/
@Override
- public String getName(Locale locale) {
- return getBundle(locale).getString("report.plugin.name");
+ public String getDescription(Locale locale) {
+ return getI18nString(locale, "description");
}
/**
@@ -240,62 +255,65 @@ private void generateMojosDocumentation(PluginDescriptor pluginDescriptor, Local
}
}
- /**
- * @param locale not null
- * @return the bundle for this report
- */
- protected static ResourceBundle getBundle(Locale locale) {
- return ResourceBundle.getBundle("plugin-report", locale, PluginReport.class.getClassLoader());
- }
-
/**
* Generates an overview page with the list of goals
* and a link to the goal's page.
*/
static class PluginOverviewRenderer extends AbstractMavenReportRenderer {
+ private final I18N i18n;
+
+ private final Locale locale;
+
private final MavenProject project;
private final List requirementsHistories;
private final PluginDescriptor pluginDescriptor;
- private final Locale locale;
-
private final boolean hasExtensionsToLoad;
/**
+ * @param sink not null
+ * @param i18n not null
+ * @param locale not null
* @param project not null
* @param requirementsHistories not null
- * @param sink not null
* @param pluginDescriptor not null
- * @param locale not null
*/
PluginOverviewRenderer(
+ Sink sink,
+ I18N i18n,
+ Locale locale,
MavenProject project,
List requirementsHistories,
- Sink sink,
PluginDescriptor pluginDescriptor,
- Locale locale,
boolean hasExtensionsToLoad) {
super(sink);
+ this.i18n = i18n;
+
+ this.locale = locale;
+
this.project = project;
this.requirementsHistories = requirementsHistories;
this.pluginDescriptor = pluginDescriptor;
- this.locale = locale;
-
this.hasExtensionsToLoad = hasExtensionsToLoad;
}
- /**
- * {@inheritDoc}
- */
@Override
public String getTitle() {
- return getBundle(locale).getString("report.plugin.title");
+ return getI18nString("title");
+ }
+
+ /**
+ * @param key The key.
+ * @return The translated string.
+ */
+ protected String getI18nString(String key) {
+ return i18n.getString("plugin-report", locale, "report.plugin." + key);
}
/**
@@ -307,17 +325,15 @@ public void renderBody() {
if (!(pluginDescriptor.getMojos() != null
&& pluginDescriptor.getMojos().size() > 0)) {
- paragraph(getBundle(locale).getString("report.plugin.goals.nogoal"));
+ paragraph(getI18nString("goals.nogoal"));
endSection();
return;
}
- paragraph(getBundle(locale).getString("report.plugin.goals.intro"));
+ paragraph(getI18nString("goals.intro"));
boolean hasMavenReport = false;
- for (Iterator i = pluginDescriptor.getMojos().iterator(); i.hasNext(); ) {
- MojoDescriptor mojo = i.next();
-
+ for (MojoDescriptor mojo : pluginDescriptor.getMojos()) {
if (GeneratorUtils.isMavenReport(mojo.getImplementation(), project)) {
hasMavenReport = true;
}
@@ -325,9 +341,9 @@ public void renderBody() {
startTable();
- String goalColumnName = getBundle(locale).getString("report.plugin.goals.column.goal");
- String isMavenReport = getBundle(locale).getString("report.plugin.goals.column.isMavenReport");
- String descriptionColumnName = getBundle(locale).getString("report.plugin.goals.column.description");
+ String goalColumnName = getI18nString("goals.column.goal");
+ String isMavenReport = getI18nString("goals.column.isMavenReport");
+ String descriptionColumnName = getI18nString("goals.column.description");
if (hasMavenReport) {
tableHeader(new String[] {goalColumnName, isMavenReport, descriptionColumnName});
} else {
@@ -348,25 +364,20 @@ public void renderBody() {
String description;
if (StringUtils.isNotEmpty(mojo.getDeprecated())) {
- description = "" + getBundle(locale).getString("report.plugin.goal.deprecated")
- + " " + mojo.getDeprecated();
+ description = "" + getI18nString("goal.deprecated") + " " + mojo.getDeprecated();
} else if (StringUtils.isNotEmpty(mojo.getDescription())) {
description = mojo.getDescription();
} else {
- description = getBundle(locale).getString("report.plugin.goal.nodescription");
+ description = getI18nString("goal.nodescription");
}
sink.tableRow();
tableCell(createLinkPatternedText(goalName, goalDocumentationLink));
if (hasMavenReport) {
if (GeneratorUtils.isMavenReport(mojo.getImplementation(), project)) {
- sink.tableCell();
- sink.text(getBundle(locale).getString("report.plugin.isReport"));
- sink.tableCell_();
+ tableCell(getI18nString("isReport"));
} else {
- sink.tableCell();
- sink.text(getBundle(locale).getString("report.plugin.isNotReport"));
- sink.tableCell_();
+ tableCell(getI18nString("isNotReport"));
}
}
tableCell(description, true);
@@ -375,25 +386,22 @@ public void renderBody() {
endTable();
- startSection(getBundle(locale).getString("report.plugin.systemrequirements"));
+ startSection(getI18nString("systemrequirements"));
- paragraph(getBundle(locale).getString("report.plugin.systemrequirements.intro"));
+ paragraph(getI18nString("systemrequirements.intro"));
startTable();
String maven = discoverMavenRequirement(project, pluginDescriptor);
sink.tableRow();
- tableCell(getBundle(locale).getString("report.plugin.systemrequirements.maven"));
- tableCell(
- (maven != null
- ? maven
- : getBundle(locale).getString("report.plugin.systemrequirements.nominimum")));
+ tableCell(getI18nString("systemrequirements.maven"));
+ tableCell((maven != null ? maven : getI18nString("systemrequirements.nominimum")));
sink.tableRow_();
String jdk = discoverJdkRequirement(project, pluginDescriptor);
sink.tableRow();
- tableCell(getBundle(locale).getString("report.plugin.systemrequirements.jdk"));
- tableCell((jdk != null ? jdk : getBundle(locale).getString("report.plugin.systemrequirements.nominimum")));
+ tableCell(getI18nString("systemrequirements.jdk"));
+ tableCell((jdk != null ? jdk : getI18nString("systemrequirements.nominimum")));
sink.tableRow_();
endTable();
@@ -412,14 +420,14 @@ private void renderRequirementsHistories() {
return;
}
- startSection(getBundle(locale).getString("report.plugin.systemrequirements.history"));
- paragraph(getBundle(locale).getString("report.plugin.systemrequirements.history.intro"));
+ startSection(getI18nString("systemrequirements.history"));
+ paragraph(getI18nString("systemrequirements.history.intro"));
startTable();
tableHeader(new String[] {
- getBundle(locale).getString("report.plugin.systemrequirements.history.version"),
- getBundle(locale).getString("report.plugin.systemrequirements.history.maven"),
- getBundle(locale).getString("report.plugin.systemrequirements.history.jdk")
+ getI18nString("systemrequirements.history.version"),
+ getI18nString("systemrequirements.history.maven"),
+ getI18nString("systemrequirements.history.jdk")
});
requirementsHistories.forEach(requirementsHistory -> {
@@ -440,90 +448,86 @@ private void renderRequirementsHistories() {
* @param hasMavenReport If the plugin has a report or not
*/
private void renderUsageSection(boolean hasMavenReport) {
- startSection(getBundle(locale).getString("report.plugin.usage"));
+ startSection(getI18nString("usage"));
// Configuration
- sink.paragraph();
- text(getBundle(locale).getString("report.plugin.usage.intro"));
- sink.paragraph_();
+ paragraph(getI18nString("usage.intro"));
StringBuilder sb = new StringBuilder();
- sb.append("").append('\n');
- sb.append(" ...").append('\n');
- sb.append(" ").append('\n');
- sb.append(" ")
- .append('\n');
- sb.append(" ").append('\n');
- sb.append(" ").append('\n');
- sb.append(" ").append('\n');
+ sb.append("").append(Markup.EOL);
+ sb.append(" ...").append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
+ sb.append(" ")
+ .append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
sb.append(" ")
.append(pluginDescriptor.getGroupId())
.append("")
- .append('\n');
+ .append(Markup.EOL);
sb.append(" ")
.append(pluginDescriptor.getArtifactId())
.append("")
- .append('\n');
+ .append(Markup.EOL);
sb.append(" ")
.append(pluginDescriptor.getVersion())
.append("")
- .append('\n');
+ .append(Markup.EOL);
if (hasExtensionsToLoad) {
- sb.append(" true").append('\n');
+ sb.append(" true").append(Markup.EOL);
}
- sb.append(" ").append('\n');
- sb.append(" ...").append('\n');
- sb.append(" ").append('\n');
- sb.append(" ").append('\n');
- sb.append(" ")
- .append('\n');
- sb.append(" ").append('\n');
- sb.append(" ").append('\n');
+ sb.append(" ").append(Markup.EOL);
+ sb.append(" ...").append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
sb.append(" ")
.append(pluginDescriptor.getGroupId())
.append("")
- .append('\n');
+ .append(Markup.EOL);
sb.append(" ")
.append(pluginDescriptor.getArtifactId())
.append("")
- .append('\n');
- sb.append(" ").append('\n');
- sb.append(" ...").append('\n');
- sb.append(" ").append('\n');
- sb.append(" ").append('\n');
+ .append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
+ sb.append(" ...").append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
if (hasMavenReport) {
- sb.append(" ...").append('\n');
- sb.append(" ")
- .append('\n');
- sb.append(" ").append('\n');
- sb.append(" ").append('\n');
- sb.append(" ").append('\n');
+ sb.append(" ...").append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
sb.append(" ")
.append(pluginDescriptor.getGroupId())
.append("")
- .append('\n');
+ .append(Markup.EOL);
sb.append(" ")
.append(pluginDescriptor.getArtifactId())
.append("")
- .append('\n');
+ .append(Markup.EOL);
sb.append(" ")
.append(pluginDescriptor.getVersion())
.append("")
- .append('\n');
- sb.append(" ").append('\n');
- sb.append(" ...").append('\n');
- sb.append(" ").append('\n');
- sb.append(" ").append('\n');
+ .append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
+ sb.append(" ...").append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
+ sb.append(" ").append(Markup.EOL);
}
- sb.append(" ...").append('\n');
- sb.append("").append('\n');
+ sb.append(" ...").append(Markup.EOL);
+ sb.append("");
verbatimText(sb.toString());
sink.paragraph();
- linkPatternedText(getBundle(locale).getString("report.plugin.configuration.end"));
+ linkPatternedText(getI18nString("configuration.end"));
sink.paragraph_();
endSection();