diff --git a/server-core/src/main/java/io/onedev/server/buildspec/step/RegistryLogin.java b/server-core/src/main/java/io/onedev/server/buildspec/step/RegistryLogin.java index cf75edc9e5..5537ad3eff 100644 --- a/server-core/src/main/java/io/onedev/server/buildspec/step/RegistryLogin.java +++ b/server-core/src/main/java/io/onedev/server/buildspec/step/RegistryLogin.java @@ -23,7 +23,7 @@ public class RegistryLogin implements Serializable { private String passwordSecret; - @Editable(order=100, placeholder="Docker hub", displayPlaceholderAsValue =true, description="Specify registry url. Leave empty for official registry") + @Editable(order=100, placeholder="Docker Hub", displayPlaceholderAsValue =true, description="Specify registry url. Leave empty for official registry") @Interpolative(variableSuggester = "suggestVariables") public String getRegistryUrl() { return registryUrl; diff --git a/server-core/src/main/java/io/onedev/server/commandhandler/ExtractTranslationKeys.java b/server-core/src/main/java/io/onedev/server/commandhandler/ExtractTranslationKeys.java index d6b95a45e4..81587c29f0 100644 --- a/server-core/src/main/java/io/onedev/server/commandhandler/ExtractTranslationKeys.java +++ b/server-core/src/main/java/io/onedev/server/commandhandler/ExtractTranslationKeys.java @@ -31,6 +31,7 @@ import io.onedev.commons.utils.StringUtils; import io.onedev.server.annotation.Editable; import io.onedev.server.persistence.HibernateConfig; import io.onedev.server.security.SecurityUtils; +import io.onedev.server.util.MetricIndicator; import io.onedev.server.web.editable.EditableUtils; import io.onedev.server.web.translation.Translation; import io.onedev.server.web.util.TextUtils; @@ -125,21 +126,21 @@ public class ExtractTranslationKeys extends CommandHandler { } } for (var method : clazz.getDeclaredMethods()) { - var annotation = method.getAnnotation(Editable.class); - if (annotation != null) { + editable = method.getAnnotation(Editable.class); + if (editable != null) { extractedTranslationKeys.add(EditableUtils.getDisplayName(method)); var group = EditableUtils.getGroup(method); if (group != null) extractedTranslationKeys.add(group); - var description = annotation.description(); + var description = editable.description(); if (description.length() != 0) { extractedTranslationKeys.add(description); } - var placeholder = annotation.placeholder(); + var placeholder = editable.placeholder(); if (placeholder.length() != 0) { extractedTranslationKeys.add(placeholder); } - var rootPlaceholder = annotation.rootPlaceholder(); + var rootPlaceholder = editable.rootPlaceholder(); if (rootPlaceholder.length() != 0) { extractedTranslationKeys.add(rootPlaceholder); } @@ -156,6 +157,13 @@ public class ExtractTranslationKeys extends CommandHandler { if (size != null && size.message().length() != 0) { extractedTranslationKeys.add(size.message()); } + var metricIndicator = method.getAnnotation(MetricIndicator.class); + if (metricIndicator != null) { + if (metricIndicator.name().length() != 0) + extractedTranslationKeys.add(metricIndicator.name()); + if (metricIndicator.group().length() != 0) + extractedTranslationKeys.add(metricIndicator.group()); + } } if (clazz.isEnum()) { for (var constant : clazz.getEnumConstants()) { diff --git a/server-core/src/main/java/io/onedev/server/model/LinkSpec.java b/server-core/src/main/java/io/onedev/server/model/LinkSpec.java index b0cb958d4c..8dd1662b67 100644 --- a/server-core/src/main/java/io/onedev/server/model/LinkSpec.java +++ b/server-core/src/main/java/io/onedev/server/model/LinkSpec.java @@ -61,7 +61,7 @@ public class LinkSpec extends AbstractEntity { this.name = name; } - @Editable(order=150, name="Multiple", description="Whether or not multiple issues can be linked") + @Editable(order=150, name="link:Multiple", description="Whether or not multiple issues can be linked") public boolean isMultiple() { return multiple; } diff --git a/server-core/src/main/java/io/onedev/server/model/support/administration/jobexecutor/RegistryLogin.java b/server-core/src/main/java/io/onedev/server/model/support/administration/jobexecutor/RegistryLogin.java index ed61f84a6f..175f0758a1 100644 --- a/server-core/src/main/java/io/onedev/server/model/support/administration/jobexecutor/RegistryLogin.java +++ b/server-core/src/main/java/io/onedev/server/model/support/administration/jobexecutor/RegistryLogin.java @@ -28,7 +28,7 @@ public class RegistryLogin implements Serializable { private String password; - @Editable(order=100, placeholder="Docker hub", description="Specify registry url. Leave empty for official registry") + @Editable(order=100, placeholder="Docker Hub", description="Specify registry url. Leave empty for official registry") @Interpolative(variableSuggester = "suggestRegistryUrlVariables") public String getRegistryUrl() { return registryUrl; diff --git a/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/BranchUpdatedSpec.java b/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/BranchUpdatedSpec.java index c830431f45..cc0bdde410 100644 --- a/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/BranchUpdatedSpec.java +++ b/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/BranchUpdatedSpec.java @@ -1,14 +1,17 @@ package io.onedev.server.model.support.issue.transitionspec; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; import java.util.ArrayList; import java.util.List; import io.onedev.commons.codeassist.InputSuggestion; -import io.onedev.server.model.Project; -import io.onedev.server.search.entity.issue.IssueQueryLexer; import io.onedev.server.annotation.Editable; import io.onedev.server.annotation.IssueQuery; import io.onedev.server.annotation.Patterns; +import io.onedev.server.model.Project; +import io.onedev.server.search.entity.issue.IssueQueryLexer; import io.onedev.server.web.util.SuggestionUtils; @Editable(order=500, name="Code is committed") @@ -59,9 +62,9 @@ public class BranchUpdatedSpec extends AutoSpec { @Override public String getTriggerDescription() { if (branches != null) - return "code is committed to branches '" + branches + "'"; + return MessageFormat.format(_T("code is committed to branches \"{0}\""), branches); else - return "code is committed to any branch"; + return _T("code is committed to any branch"); } } diff --git a/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/BuildSuccessfulSpec.java b/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/BuildSuccessfulSpec.java index f51edd4343..aa09bef54f 100644 --- a/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/BuildSuccessfulSpec.java +++ b/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/BuildSuccessfulSpec.java @@ -1,16 +1,19 @@ package io.onedev.server.model.support.issue.transitionspec; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; import java.util.ArrayList; import java.util.List; import io.onedev.commons.codeassist.InputSuggestion; +import io.onedev.server.annotation.Editable; +import io.onedev.server.annotation.IssueQuery; +import io.onedev.server.annotation.Patterns; import io.onedev.server.model.Project; import io.onedev.server.search.entity.issue.IssueQueryLexer; import io.onedev.server.util.patternset.PatternSet; import io.onedev.server.util.usage.Usage; -import io.onedev.server.annotation.Editable; -import io.onedev.server.annotation.IssueQuery; -import io.onedev.server.annotation.Patterns; import io.onedev.server.web.util.SuggestionUtils; @Editable(order=400, name="Build is successful") @@ -94,14 +97,14 @@ public class BuildSuccessfulSpec extends AutoSpec { public String getTriggerDescription() { if (jobNames != null) { if (branches != null) - return "build is successful for jobs '" + jobNames + "' on branches '" + branches + "'"; + return MessageFormat.format(_T("build is successful for jobs \"{0}\" on branches \"{1}\""), jobNames, branches); else - return "build is successful for jobs '" + jobNames + "' on any branch"; + return MessageFormat.format(_T("build is successful for jobs \"{0}\" on any branch"), jobNames); } else { if (branches != null) - return "build is successful for any job on branches '" + branches + "'"; + return MessageFormat.format(_T("build is successful for any job on branches \"{0}\""), branches); else - return "build is successful for any job and branch"; + return _T("build is successful for any job and branch"); } } diff --git a/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/IssueStateTransitedSpec.java b/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/IssueStateTransitedSpec.java index 26c54cb39b..7a52c6a1f6 100644 --- a/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/IssueStateTransitedSpec.java +++ b/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/IssueStateTransitedSpec.java @@ -1,5 +1,8 @@ package io.onedev.server.model.support.issue.transitionspec; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; import java.util.ArrayList; import java.util.List; @@ -43,7 +46,7 @@ public class IssueStateTransitedSpec extends AutoSpec { @Override public String getTriggerDescription() { - return "state of other issue is transited to " + states; + return MessageFormat.format(_T("state of other issue is transited to \"{0}\""), states); } } diff --git a/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/ManualSpec.java b/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/ManualSpec.java index 01433200ac..b34c7ba512 100644 --- a/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/ManualSpec.java +++ b/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/ManualSpec.java @@ -1,5 +1,8 @@ package io.onedev.server.model.support.issue.transitionspec; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -260,9 +263,9 @@ public class ManualSpec extends TransitionSpec { @Override public String getTriggerDescription() { if (authorizedRoles.isEmpty()) - return "transit manually by any user"; + return _T("transit manually by any user"); else - return "transit manually by any user of roles " + authorizedRoles; + return MessageFormat.format(_T("transit manually by any user of roles \"{0}\""), authorizedRoles); } } diff --git a/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/NoActivitySpec.java b/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/NoActivitySpec.java index 0a69b48a4a..39eb6c7ae2 100644 --- a/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/NoActivitySpec.java +++ b/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/NoActivitySpec.java @@ -1,5 +1,9 @@ package io.onedev.server.model.support.issue.transitionspec; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; + import javax.validation.constraints.Min; import io.onedev.server.annotation.Editable; @@ -23,7 +27,7 @@ public class NoActivitySpec extends AutoSpec { @Override public String getTriggerDescription() { - return "no activity for " + days + " days"; + return MessageFormat.format(_T("no activity for {0} days"), days); } } diff --git a/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/PullRequestDiscardedSpec.java b/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/PullRequestDiscardedSpec.java index 5a9bcf7169..86ab899e07 100644 --- a/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/PullRequestDiscardedSpec.java +++ b/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/PullRequestDiscardedSpec.java @@ -1,5 +1,9 @@ package io.onedev.server.model.support.issue.transitionspec; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; + import io.onedev.server.annotation.Editable; @Editable(order=300, name="Pull request is discarded") @@ -10,9 +14,9 @@ public class PullRequestDiscardedSpec extends PullRequestSpec { @Override public String getTriggerDescription() { if (getBranches() != null) - return "pull request to branches '" + getBranches() + "' is discarded"; + return MessageFormat.format(_T("pull request to branches \"{0}\" is discarded"), getBranches()); else - return "pull request to any branch is discarded"; + return _T("pull request to any branch is discarded"); } } diff --git a/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/PullRequestMergedSpec.java b/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/PullRequestMergedSpec.java index 5e14962dfb..871e27a9e1 100644 --- a/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/PullRequestMergedSpec.java +++ b/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/PullRequestMergedSpec.java @@ -1,5 +1,9 @@ package io.onedev.server.model.support.issue.transitionspec; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; + import io.onedev.server.annotation.Editable; @Editable(order=250, name="Pull request is merged") @@ -10,9 +14,9 @@ public class PullRequestMergedSpec extends PullRequestSpec { @Override public String getTriggerDescription() { if (getBranches() != null) - return "pull request to branches '" + getBranches() + "' is merged"; + return MessageFormat.format(_T("pull request to branches \"{0}\" is merged"), getBranches()); else - return "pull request to any branch is merged"; + return _T("pull request to any branch is merged"); } } diff --git a/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/PullRequestOpenedSpec.java b/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/PullRequestOpenedSpec.java index 1fe2064552..ad3207e7cd 100644 --- a/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/PullRequestOpenedSpec.java +++ b/server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec/PullRequestOpenedSpec.java @@ -1,5 +1,9 @@ package io.onedev.server.model.support.issue.transitionspec; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; + import io.onedev.server.annotation.Editable; @Editable(order=200, name="Pull request is opened") @@ -10,9 +14,9 @@ public class PullRequestOpenedSpec extends PullRequestSpec { @Override public String getTriggerDescription() { if (getBranches() != null) - return "pull request to branches '" + getBranches() + "' is opened"; + return MessageFormat.format(_T("pull request to branches \"{0}\" is opened"), getBranches()); else - return "pull request to any branch is opened"; + return _T("pull request to any branch is opened"); } } diff --git a/server-core/src/main/java/io/onedev/server/model/support/widget/Widget.java b/server-core/src/main/java/io/onedev/server/model/support/widget/Widget.java index ce06a993a5..7cd5b29d8d 100644 --- a/server-core/src/main/java/io/onedev/server/model/support/widget/Widget.java +++ b/server-core/src/main/java/io/onedev/server/model/support/widget/Widget.java @@ -22,7 +22,7 @@ public class Widget implements Serializable { private int bottom; - @Editable(order=100, name="Tabs") + @Editable(order=100, name="widget:Tabs") @Size(min=1, message = "At least one tab should be added") public List> getTabs() { return tabs; diff --git a/server-core/src/main/java/io/onedev/server/util/DateUtils.java b/server-core/src/main/java/io/onedev/server/util/DateUtils.java index 5f412d0967..e301927397 100644 --- a/server-core/src/main/java/io/onedev/server/util/DateUtils.java +++ b/server-core/src/main/java/io/onedev/server/util/DateUtils.java @@ -1,5 +1,8 @@ package io.onedev.server.util; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; @@ -18,6 +21,7 @@ import com.google.common.collect.Lists; import com.joestelmach.natty.DateGroup; import com.joestelmach.natty.Parser; +import io.onedev.commons.utils.StringUtils; import io.onedev.k8shelper.KubernetesHelper; import io.onedev.server.web.WebSession; @@ -114,7 +118,10 @@ public class DateUtils { } public static String formatDuration(long durationMillis) { - return KubernetesHelper.formatDuration(durationMillis); + var duration = KubernetesHelper.formatDuration(durationMillis); + var number = StringUtils.substringBefore(duration, " "); + var unit = StringUtils.substringAfter(duration, " "); + return MessageFormat.format(_T("{0} " + unit), number); } public static Date parseISO8601Date(String dateString) { diff --git a/server-core/src/main/java/io/onedev/server/web/asset/codeproblem/code-problem.js b/server-core/src/main/java/io/onedev/server/web/asset/codeproblem/code-problem.js index 7b226faaf7..b3dad5f366 100644 --- a/server-core/src/main/java/io/onedev/server/web/asset/codeproblem/code-problem.js +++ b/server-core/src/main/java/io/onedev/server/web/asset/codeproblem/code-problem.js @@ -31,7 +31,7 @@ onedev.server.codeProblem = { return "badge-secondary"; } }, - renderProblems: function(problems) { + renderProblems: function(problems, translations) { var $container = $("
"); for (var i in problems) { var problem = problems[i]; @@ -40,8 +40,8 @@ onedev.server.codeProblem = { $container.append($content); $content.html(problem.message); - $content.prepend(`${problem.severity}`); - $content.append(""); + $content.prepend(`${translations[problem.severity]}`); + $content.append(``); } return $container.html(); } diff --git a/server-core/src/main/java/io/onedev/server/web/component/AgentStatusBadge.java b/server-core/src/main/java/io/onedev/server/web/component/AgentStatusBadge.java index 1b3eb18b3d..61c0ec9c9f 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/AgentStatusBadge.java +++ b/server-core/src/main/java/io/onedev/server/web/component/AgentStatusBadge.java @@ -1,5 +1,7 @@ package io.onedev.server.web.component; +import static io.onedev.server.web.translation.Translation._T; + import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.model.IModel; @@ -20,12 +22,12 @@ public class AgentStatusBadge extends Label { protected String load() { String status; if (getAgent().isOnline()) - status = "Online"; + status = _T("Online"); else - status = "Offline"; + status = _T("Offline"); if (getAgent().isPaused()) - status += "/Paused"; + status += " / " + _T("Paused"); return status; } diff --git a/server-core/src/main/java/io/onedev/server/web/component/blob/BlobPicker.java b/server-core/src/main/java/io/onedev/server/web/component/blob/BlobPicker.java index a33c36e430..fe181bb18f 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/blob/BlobPicker.java +++ b/server-core/src/main/java/io/onedev/server/web/component/blob/BlobPicker.java @@ -1,5 +1,7 @@ package io.onedev.server.web.component.blob; +import static io.onedev.server.web.translation.Translation._T; + import java.util.HashSet; import java.util.Set; @@ -71,7 +73,7 @@ public abstract class BlobPicker extends DropdownLink { }; } else { - return new Label(id, "Project or revision not specified yet").add(AttributeAppender.append("class", "m-3 text-danger font-italic")); + return new Label(id, _T("Project or revision not specified yet")).add(AttributeAppender.append("class", "m-3 text-danger font-italic")); } } @@ -92,10 +94,10 @@ public abstract class BlobPicker extends DropdownLink { + " " + "", "", - blobPath!=null?HtmlEscape.escapeHtml5(blobPath):"Choose file", + blobPath!=null?HtmlEscape.escapeHtml5(blobPath):_T("Choose file"), SpriteImage.getVersionedHref(IconScope.class, "arrow"))); } else { - return Model.of("Select project and revision first"); + return Model.of("" + _T("Select project and revision first") + ""); } } diff --git a/server-core/src/main/java/io/onedev/server/web/component/branch/choice/BranchMultiChoice.java b/server-core/src/main/java/io/onedev/server/web/component/branch/choice/BranchMultiChoice.java index 63ad14d899..998d6dc190 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/branch/choice/BranchMultiChoice.java +++ b/server-core/src/main/java/io/onedev/server/web/component/branch/choice/BranchMultiChoice.java @@ -1,5 +1,7 @@ package io.onedev.server.web.component.branch.choice; +import static io.onedev.server.web.translation.Translation._T; + import java.util.Collection; import java.util.List; @@ -21,9 +23,9 @@ public class BranchMultiChoice extends Select2MultiChoice { protected void onInitialize() { super.onInitialize(); if (isRequired()) - getSettings().setPlaceholder("Choose branches..."); + getSettings().setPlaceholder(_T("Choose branches...")); else - getSettings().setPlaceholder("Not specified"); + getSettings().setPlaceholder(_T("Not specified")); getSettings().setFormatResult("onedev.server.branchChoiceFormatter.formatResult"); getSettings().setFormatSelection("onedev.server.branchChoiceFormatter.formatSelection"); getSettings().setEscapeMarkup("onedev.server.branchChoiceFormatter.escapeMarkup"); diff --git a/server-core/src/main/java/io/onedev/server/web/component/branch/choice/BranchSingleChoice.java b/server-core/src/main/java/io/onedev/server/web/component/branch/choice/BranchSingleChoice.java index e498661ffb..5fc6c5e56a 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/branch/choice/BranchSingleChoice.java +++ b/server-core/src/main/java/io/onedev/server/web/component/branch/choice/BranchSingleChoice.java @@ -1,5 +1,7 @@ package io.onedev.server.web.component.branch.choice; +import static io.onedev.server.web.translation.Translation._T; + import java.util.List; import org.apache.wicket.markup.head.IHeaderResponse; @@ -22,9 +24,9 @@ public class BranchSingleChoice extends Select2Choice { getSettings().setAllowClear(!isRequired()); if (isRequired()) - getSettings().setPlaceholder("Choose branch..."); + getSettings().setPlaceholder(_T("Choose branch...")); else - getSettings().setPlaceholder("Not specified"); + getSettings().setPlaceholder(_T("Not specified")); getSettings().setFormatResult("onedev.server.branchChoiceFormatter.formatResult"); getSettings().setFormatSelection("onedev.server.branchChoiceFormatter.formatSelection"); getSettings().setEscapeMarkup("onedev.server.branchChoiceFormatter.escapeMarkup"); diff --git a/server-core/src/main/java/io/onedev/server/web/component/build/choice/BuildSingleChoice.java b/server-core/src/main/java/io/onedev/server/web/component/build/choice/BuildSingleChoice.java index f4fdaf4474..26d9699a42 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/build/choice/BuildSingleChoice.java +++ b/server-core/src/main/java/io/onedev/server/web/component/build/choice/BuildSingleChoice.java @@ -1,5 +1,7 @@ package io.onedev.server.web.component.build.choice; +import static io.onedev.server.web.translation.Translation._T; + import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.JavaScriptHeaderItem; import org.apache.wicket.model.IModel; @@ -19,9 +21,9 @@ public class BuildSingleChoice extends Select2Choice { getSettings().setAllowClear(!isRequired()); if (isRequired()) - getSettings().setPlaceholder("Choose build..."); + getSettings().setPlaceholder(_T("Choose build...")); else - getSettings().setPlaceholder("Not specified"); + getSettings().setPlaceholder(_T("Not specified")); getSettings().setFormatResult("onedev.server.buildChoiceFormatter.formatResult"); getSettings().setFormatSelection("onedev.server.buildChoiceFormatter.formatSelection"); getSettings().setEscapeMarkup("onedev.server.buildChoiceFormatter.escapeMarkup"); diff --git a/server-core/src/main/java/io/onedev/server/web/component/chart/pie/PieSlice.java b/server-core/src/main/java/io/onedev/server/web/component/chart/pie/PieSlice.java index b2598556e4..87c81c5d60 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/chart/pie/PieSlice.java +++ b/server-core/src/main/java/io/onedev/server/web/component/chart/pie/PieSlice.java @@ -7,6 +7,8 @@ public class PieSlice implements Serializable { private static final long serialVersionUID = 1L; private final String name; + + private final String displayName; private final int value; @@ -14,13 +16,18 @@ public class PieSlice implements Serializable { private final boolean selected; - public PieSlice(String name, int value, String color, boolean selected) { + public PieSlice(String name, String displayName, int value, String color, boolean selected) { this.name = name; + this.displayName = displayName; this.value = value; this.color = color; this.selected = selected; } + public PieSlice(String name, int value, String color, boolean selected) { + this(name, name, value, color, selected); + } + public String getColor() { return color; } @@ -29,6 +36,10 @@ public class PieSlice implements Serializable { return name; } + public String getDisplayName() { + return displayName; + } + public int getValue() { return value; } diff --git a/server-core/src/main/java/io/onedev/server/web/component/chart/pie/pie-chart.js b/server-core/src/main/java/io/onedev/server/web/component/chart/pie/pie-chart.js index 3490e00235..97a6fe3931 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/chart/pie/pie-chart.js +++ b/server-core/src/main/java/io/onedev/server/web/component/chart/pie/pie-chart.js @@ -11,7 +11,8 @@ onedev.server.pieChart = { for (var i in pieSlices) { chartColors.push(pieSlices[i].color); chartData.push({ - name: pieSlices[i].name, + name: pieSlices[i].name, + displayName: pieSlices[i].displayName, value: pieSlices[i].value }) pieSelections[pieSlices[i].name] = pieSlices[i].selected; @@ -20,7 +21,9 @@ onedev.server.pieChart = { chart.setOption({ color: chartColors, tooltip: { - formatter: "{b}", + formatter: function(params) { + return params.data.displayName; + }, textStyle: { color: darkMode? 'white': '#535370' }, @@ -33,11 +36,15 @@ onedev.server.pieChart = { x: "center", formatter: function(name) { var value = 0; + var displayName = ""; for (var i = 0; i < chartData.length; i++) { - if (chartData[i].name == name) + if (chartData[i].name == name) { value = chartData[i].value; + displayName = chartData[i].displayName; + break; + } } - return `${name} ${value}`; + return `${displayName} ${value}`; }, textStyle: { color: darkMode?'#cdcdde':'#3F4254' diff --git a/server-core/src/main/java/io/onedev/server/web/component/codequeryoption/FileQueryOptionEditor.html b/server-core/src/main/java/io/onedev/server/web/component/codequeryoption/FileQueryOptionEditor.html index 88d9b6564e..c4b4150729 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/codequeryoption/FileQueryOptionEditor.html +++ b/server-core/src/main/java/io/onedev/server/web/component/codequeryoption/FileQueryOptionEditor.html @@ -1,11 +1,11 @@
- + -

(* = any string, ? = any character)

+

(* = any string, ? = any character)

- +
diff --git a/server-core/src/main/java/io/onedev/server/web/component/codequeryoption/SymbolQueryOptionEditor.html b/server-core/src/main/java/io/onedev/server/web/component/codequeryoption/SymbolQueryOptionEditor.html index f4cbf7d339..d4d89e5fd2 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/codequeryoption/SymbolQueryOptionEditor.html +++ b/server-core/src/main/java/io/onedev/server/web/component/codequeryoption/SymbolQueryOptionEditor.html @@ -1,15 +1,15 @@
- + -

(* = any string, ? = any character)

+

(* = any string, ? = any character)

- +
- +
diff --git a/server-core/src/main/java/io/onedev/server/web/component/codequeryoption/TextQueryOptionEditor.html b/server-core/src/main/java/io/onedev/server/web/component/codequeryoption/TextQueryOptionEditor.html index febf34b281..cf62b2ddc4 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/codequeryoption/TextQueryOptionEditor.html +++ b/server-core/src/main/java/io/onedev/server/web/component/codequeryoption/TextQueryOptionEditor.html @@ -1,18 +1,18 @@
- +
- - - + + +
- +
diff --git a/server-core/src/main/java/io/onedev/server/web/component/diff/blob/text/BlobTextDiffPanel.java b/server-core/src/main/java/io/onedev/server/web/component/diff/blob/text/BlobTextDiffPanel.java index 8a23805519..26b4cc3ed8 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/diff/blob/text/BlobTextDiffPanel.java +++ b/server-core/src/main/java/io/onedev/server/web/component/diff/blob/text/BlobTextDiffPanel.java @@ -414,7 +414,7 @@ public class BlobTextDiffPanel extends Panel { translations.put("unable-to-comment", _T("Unable to comment")); translations.put("perma-link", _T("Permanent link of this selection")); translations.put("copy-to-clipboard", _T("Copy selected text to clipboard")); - translations.put("add-comment", _T("Add comment on this selection")); + translations.put("add-selection-comment", _T("Add comment on this selection")); translations.put("login-to-comment", _T("Login to comment on selection")); translations.put("covered-by-tests", _T("Covered by tests")); translations.put("not-covered-by-any-test", _T("Not covered by any test")); @@ -423,6 +423,9 @@ public class BlobTextDiffPanel extends Panel { translations.put("show-comment", _T("Click to show comment of marked text")); translations.put("loading", _T("Loading...")); translations.put("invalid-selection", _T("Invalid selection, click for details")); + for (var severity: CodeProblem.Severity.values()) + translations.put(severity.name(), _T("severity:" + severity.name())); + translations.put("add-problem-comment", _T("Add comment")); String script = String.format("onedev.server.blobTextDiff.onDomReady('%s', '%s', '%s', '%s', '%s', '%s', %s, %s, %s, %s, %s, %s, %s);", getMarkupId(), symbolTooltip.getMarkupId(), diff --git a/server-core/src/main/java/io/onedev/server/web/component/diff/blob/text/blob-text-diff.js b/server-core/src/main/java/io/onedev/server/web/component/diff/blob/text/blob-text-diff.js index be5a9790a2..e20a12bfff 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/diff/blob/text/blob-text-diff.js +++ b/server-core/src/main/java/io/onedev/server/web/component/diff/blob/text/blob-text-diff.js @@ -786,7 +786,7 @@ onedev.server.blobTextDiff = { $(".selection-popover").remove(); }); if (loggedIn) { - $content.append(` ${onedev.server.blobTextDiff.translations["add-comment"]}`); + $content.append(` ${onedev.server.blobTextDiff.translations["add-selection-comment"]}`); $content.children("a.comment").click(function() { if (onedev.server.blobTextDiff.confirmUnsavedChanges($container)) { $container.data("callback")("addComment", markRange.leftSide, @@ -1097,7 +1097,7 @@ onedev.server.blobTextDiff = { sanitize: false, placement: "top", container: $container, - content: onedev.server.codeProblem.renderProblems(problems), + content: onedev.server.codeProblem.renderProblems(problems, onedev.server.blobTextDiff.translations), template: `
` }).on("shown.bs.popover", function() { var $currentPopover = $(`.problem-popover.${oldOrNew}[data-line='${line}']`); @@ -1117,6 +1117,10 @@ onedev.server.blobTextDiff = { } }); }); + tippy($currentPopover[0].querySelectorAll('[data-tippy-content]'), { + delay: [500, 0], + placement: 'auto' + }); }).data("popoverInited", true); } }); diff --git a/server-core/src/main/java/io/onedev/server/web/component/groupchoice/GroupMultiChoice.java b/server-core/src/main/java/io/onedev/server/web/component/groupchoice/GroupMultiChoice.java index 7c7ba75dea..d27fd70256 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/groupchoice/GroupMultiChoice.java +++ b/server-core/src/main/java/io/onedev/server/web/component/groupchoice/GroupMultiChoice.java @@ -1,5 +1,7 @@ package io.onedev.server.web.component.groupchoice; +import static io.onedev.server.web.translation.Translation._T; + import java.util.Collection; import org.apache.wicket.markup.head.IHeaderResponse; @@ -19,9 +21,9 @@ public class GroupMultiChoice extends Select2MultiChoice { protected void onInitialize() { super.onInitialize(); if (isRequired()) - getSettings().setPlaceholder("Choose groups..."); + getSettings().setPlaceholder(_T("Choose groups...")); else - getSettings().setPlaceholder("Not specified"); + getSettings().setPlaceholder(_T("Not specified")); getSettings().setFormatResult("onedev.server.groupChoiceFormatter.formatResult"); getSettings().setFormatSelection("onedev.server.groupChoiceFormatter.formatSelection"); getSettings().setEscapeMarkup("onedev.server.groupChoiceFormatter.escapeMarkup"); diff --git a/server-core/src/main/java/io/onedev/server/web/component/groupchoice/GroupSingleChoice.java b/server-core/src/main/java/io/onedev/server/web/component/groupchoice/GroupSingleChoice.java index c35b78e770..ec4fe46a8d 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/groupchoice/GroupSingleChoice.java +++ b/server-core/src/main/java/io/onedev/server/web/component/groupchoice/GroupSingleChoice.java @@ -1,5 +1,7 @@ package io.onedev.server.web.component.groupchoice; +import static io.onedev.server.web.translation.Translation._T; + import java.util.Collection; import org.apache.wicket.markup.head.IHeaderResponse; @@ -21,9 +23,9 @@ public class GroupSingleChoice extends Select2Choice { getSettings().setAllowClear(!isRequired()); if (isRequired()) - getSettings().setPlaceholder("Choose group..."); + getSettings().setPlaceholder(_T("Choose group...")); else - getSettings().setPlaceholder("Not specified"); + getSettings().setPlaceholder(_T("Not specified")); getSettings().setFormatResult("onedev.server.groupChoiceFormatter.formatResult"); getSettings().setFormatSelection("onedev.server.groupChoiceFormatter.formatSelection"); getSettings().setEscapeMarkup("onedev.server.groupChoiceFormatter.escapeMarkup"); diff --git a/server-core/src/main/java/io/onedev/server/web/component/iteration/choice/IterationSingleChoice.java b/server-core/src/main/java/io/onedev/server/web/component/iteration/choice/IterationSingleChoice.java index 5ea51e945a..821357a6cf 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/iteration/choice/IterationSingleChoice.java +++ b/server-core/src/main/java/io/onedev/server/web/component/iteration/choice/IterationSingleChoice.java @@ -1,5 +1,7 @@ package io.onedev.server.web.component.iteration.choice; +import static io.onedev.server.web.translation.Translation._T; + import java.util.Collection; import org.apache.wicket.markup.head.IHeaderResponse; @@ -21,9 +23,9 @@ public class IterationSingleChoice extends Select2Choice { getSettings().setAllowClear(!isRequired()); if (isRequired()) - getSettings().setPlaceholder("Choose iteration..."); + getSettings().setPlaceholder(_T("Choose iteration...")); else - getSettings().setPlaceholder("Not specified"); + getSettings().setPlaceholder(_T("Not specified")); getSettings().setFormatResult("onedev.server.iterationChoiceFormatter.formatResult"); getSettings().setFormatSelection("onedev.server.iterationChoiceFormatter.formatSelection"); getSettings().setEscapeMarkup("onedev.server.iterationChoiceFormatter.escapeMarkup"); diff --git a/server-core/src/main/java/io/onedev/server/web/component/project/choice/ProjectMultiChoice.java b/server-core/src/main/java/io/onedev/server/web/component/project/choice/ProjectMultiChoice.java index 5bc1ab479b..c28ecad2cb 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/project/choice/ProjectMultiChoice.java +++ b/server-core/src/main/java/io/onedev/server/web/component/project/choice/ProjectMultiChoice.java @@ -1,5 +1,7 @@ package io.onedev.server.web.component.project.choice; +import static io.onedev.server.web.translation.Translation._T; + import java.util.Collection; import java.util.List; @@ -22,9 +24,9 @@ public class ProjectMultiChoice extends Select2MultiChoice { protected void onInitialize() { super.onInitialize(); if (isRequired()) - getSettings().setPlaceholder("Choose projects..."); + getSettings().setPlaceholder(_T("Choose projects...")); else - getSettings().setPlaceholder("Not specified"); + getSettings().setPlaceholder(_T("Not specified")); getSettings().setFormatResult("onedev.server.projectChoiceFormatter.formatResult"); getSettings().setFormatSelection("onedev.server.projectChoiceFormatter.formatSelection"); getSettings().setEscapeMarkup("onedev.server.projectChoiceFormatter.escapeMarkup"); diff --git a/server-core/src/main/java/io/onedev/server/web/component/project/choice/ProjectSingleChoice.java b/server-core/src/main/java/io/onedev/server/web/component/project/choice/ProjectSingleChoice.java index fd2920f5f8..b8c515b2a9 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/project/choice/ProjectSingleChoice.java +++ b/server-core/src/main/java/io/onedev/server/web/component/project/choice/ProjectSingleChoice.java @@ -1,5 +1,7 @@ package io.onedev.server.web.component.project.choice; +import static io.onedev.server.web.translation.Translation._T; + import java.util.List; import org.apache.wicket.markup.head.IHeaderResponse; @@ -20,9 +22,9 @@ public class ProjectSingleChoice extends Select2Choice { super.onInitialize(); getSettings().setAllowClear(!isRequired()); if (isRequired()) - getSettings().setPlaceholder("Choose a project..."); + getSettings().setPlaceholder(_T("Choose a project...")); else - getSettings().setPlaceholder("Not specified"); + getSettings().setPlaceholder(_T("Not specified")); getSettings().setFormatResult("onedev.server.projectChoiceFormatter.formatResult"); getSettings().setFormatSelection("onedev.server.projectChoiceFormatter.formatSelection"); getSettings().setEscapeMarkup("onedev.server.projectChoiceFormatter.escapeMarkup"); diff --git a/server-core/src/main/java/io/onedev/server/web/component/pullrequest/assignment/AssignmentListPanel.java b/server-core/src/main/java/io/onedev/server/web/component/pullrequest/assignment/AssignmentListPanel.java index dcf0a7d8e9..e7481c106e 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/pullrequest/assignment/AssignmentListPanel.java +++ b/server-core/src/main/java/io/onedev/server/web/component/pullrequest/assignment/AssignmentListPanel.java @@ -1,17 +1,13 @@ package io.onedev.server.web.component.pullrequest.assignment; -import com.google.common.collect.Sets; -import io.onedev.server.OneDev; -import io.onedev.server.entitymanager.PullRequestAssignmentManager; -import io.onedev.server.model.PullRequest; -import io.onedev.server.model.PullRequestAssignment; -import io.onedev.server.model.User; -import io.onedev.server.security.SecurityUtils; -import io.onedev.server.web.ajaxlistener.ConfirmClickListener; -import io.onedev.server.web.behavior.ChangeObserver; -import io.onedev.server.web.component.user.ident.Mode; -import io.onedev.server.web.component.user.ident.UserIdentPanel; -import io.onedev.server.web.page.base.BasePage; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; import org.apache.wicket.ajax.markup.html.AjaxLink; @@ -23,7 +19,19 @@ import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.LoadableDetachableModel; -import java.util.*; +import com.google.common.collect.Sets; + +import io.onedev.server.OneDev; +import io.onedev.server.entitymanager.PullRequestAssignmentManager; +import io.onedev.server.model.PullRequest; +import io.onedev.server.model.PullRequestAssignment; +import io.onedev.server.model.User; +import io.onedev.server.security.SecurityUtils; +import io.onedev.server.web.ajaxlistener.ConfirmClickListener; +import io.onedev.server.web.behavior.ChangeObserver; +import io.onedev.server.web.component.user.ident.Mode; +import io.onedev.server.web.component.user.ident.UserIdentPanel; +import io.onedev.server.web.page.base.BasePage; public abstract class AssignmentListPanel extends Panel { @@ -87,8 +95,9 @@ public abstract class AssignmentListPanel extends Panel { protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { super.updateAjaxAttributes(attributes); if (!getPullRequest().isNew()) { - attributes.getAjaxCallListeners().add(new ConfirmClickListener("Do you really want to " - + "remove assignee '" + item.getModelObject().getUser().getDisplayName() + "'?")); + var message = MessageFormat.format(_T("Do you really want to remove assignee \"{0}\"?"), + item.getModelObject().getUser().getDisplayName()); + attributes.getAjaxCallListeners().add(new ConfirmClickListener(message)); } } diff --git a/server-core/src/main/java/io/onedev/server/web/component/pullrequest/choice/PullRequestSingleChoice.java b/server-core/src/main/java/io/onedev/server/web/component/pullrequest/choice/PullRequestSingleChoice.java index bccbcacd42..89945b5e64 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/pullrequest/choice/PullRequestSingleChoice.java +++ b/server-core/src/main/java/io/onedev/server/web/component/pullrequest/choice/PullRequestSingleChoice.java @@ -1,5 +1,7 @@ package io.onedev.server.web.component.pullrequest.choice; +import static io.onedev.server.web.translation.Translation._T; + import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.JavaScriptHeaderItem; import org.apache.wicket.model.IModel; @@ -18,9 +20,9 @@ public class PullRequestSingleChoice extends Select2Choice { super.onInitialize(); getSettings().setAllowClear(!isRequired()); if (isRequired()) - getSettings().setPlaceholder("Choose pull request..."); + getSettings().setPlaceholder(_T("Choose pull request...")); else - getSettings().setPlaceholder("Not specified"); + getSettings().setPlaceholder(_T("Not specified")); getSettings().setFormatResult("onedev.server.pullRequestChoiceFormatter.formatResult"); getSettings().setFormatSelection("onedev.server.pullRequestChoiceFormatter.formatSelection"); getSettings().setEscapeMarkup("onedev.server.pullRequestChoiceFormatter.escapeMarkup"); diff --git a/server-core/src/main/java/io/onedev/server/web/component/revision/RevisionPicker.java b/server-core/src/main/java/io/onedev/server/web/component/revision/RevisionPicker.java index 654c7c51ed..cce890d0bb 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/revision/RevisionPicker.java +++ b/server-core/src/main/java/io/onedev/server/web/component/revision/RevisionPicker.java @@ -120,7 +120,7 @@ public abstract class RevisionPicker extends DropdownLink { label, SpriteImage.getVersionedHref(IconScope.class, "arrow"))); } else { - return Model.of("Select project first"); + return Model.of("" + _T("Select project first") + ""); } } diff --git a/server-core/src/main/java/io/onedev/server/web/component/rolechoice/RoleMultiChoice.java b/server-core/src/main/java/io/onedev/server/web/component/rolechoice/RoleMultiChoice.java index 869af848a6..60429f225f 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/rolechoice/RoleMultiChoice.java +++ b/server-core/src/main/java/io/onedev/server/web/component/rolechoice/RoleMultiChoice.java @@ -1,5 +1,7 @@ package io.onedev.server.web.component.rolechoice; +import static io.onedev.server.web.translation.Translation._T; + import java.util.Collection; import org.apache.wicket.markup.head.IHeaderResponse; @@ -19,9 +21,9 @@ public class RoleMultiChoice extends Select2MultiChoice { protected void onInitialize() { super.onInitialize(); if (isRequired()) - getSettings().setPlaceholder("Choose roles..."); + getSettings().setPlaceholder(_T("Choose roles...")); else - getSettings().setPlaceholder("Not specified"); + getSettings().setPlaceholder(_T("Not specified")); getSettings().setFormatResult("onedev.server.roleChoiceFormatter.formatResult"); getSettings().setFormatSelection("onedev.server.roleChoiceFormatter.formatSelection"); getSettings().setEscapeMarkup("onedev.server.roleChoiceFormatter.escapeMarkup"); diff --git a/server-core/src/main/java/io/onedev/server/web/component/rolechoice/RoleSingleChoice.java b/server-core/src/main/java/io/onedev/server/web/component/rolechoice/RoleSingleChoice.java index b627c2692e..2e6800526a 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/rolechoice/RoleSingleChoice.java +++ b/server-core/src/main/java/io/onedev/server/web/component/rolechoice/RoleSingleChoice.java @@ -1,5 +1,7 @@ package io.onedev.server.web.component.rolechoice; +import static io.onedev.server.web.translation.Translation._T; + import java.util.Collection; import org.apache.wicket.markup.head.IHeaderResponse; @@ -21,9 +23,9 @@ public class RoleSingleChoice extends Select2Choice { getSettings().setAllowClear(!isRequired()); if (isRequired()) - getSettings().setPlaceholder("Choose role..."); + getSettings().setPlaceholder(_T("Choose role...")); else - getSettings().setPlaceholder("Not specified"); + getSettings().setPlaceholder(_T("Not specified")); getSettings().setFormatResult("onedev.server.roleChoiceFormatter.formatResult"); getSettings().setFormatSelection("onedev.server.roleChoiceFormatter.formatSelection"); getSettings().setEscapeMarkup("onedev.server.roleChoiceFormatter.escapeMarkup"); diff --git a/server-core/src/main/java/io/onedev/server/web/component/select2/Select2Choice.java b/server-core/src/main/java/io/onedev/server/web/component/select2/Select2Choice.java index 82e7e707c7..5a7ee82a00 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/select2/Select2Choice.java +++ b/server-core/src/main/java/io/onedev/server/web/component/select2/Select2Choice.java @@ -12,6 +12,8 @@ */ package io.onedev.server.web.component.select2; +import static io.onedev.server.web.translation.Translation._T; + import java.util.Collection; import java.util.Collections; @@ -52,7 +54,7 @@ public class Select2Choice extends AbstractSelect2Choice { protected void onInitialize() { super.onInitialize(); if (isRequired()) - getSettings().setPlaceholder("Select below..."); + getSettings().setPlaceholder(_T("Select below...")); else getSettings().setPlaceholder(""); } diff --git a/server-core/src/main/java/io/onedev/server/web/component/taskbutton/TaskButton.java b/server-core/src/main/java/io/onedev/server/web/component/taskbutton/TaskButton.java index 86a56b5cd9..97e761a45e 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/taskbutton/TaskButton.java +++ b/server-core/src/main/java/io/onedev/server/web/component/taskbutton/TaskButton.java @@ -1,5 +1,36 @@ package io.onedev.server.web.component.taskbutton; +import static io.onedev.server.web.translation.Translation._T; + +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Callable; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +import javax.inject.Inject; +import javax.inject.Singleton; + +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authz.UnauthorizedException; +import org.apache.wicket.Component; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; +import org.apache.wicket.ajax.attributes.IAjaxCallListener; +import org.apache.wicket.ajax.markup.html.form.AjaxButton; +import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.request.cycle.RequestCycle; +import org.joda.time.DateTime; +import org.quartz.ScheduleBuilder; +import org.quartz.SimpleScheduleBuilder; + import io.onedev.commons.utils.ExceptionUtils; import io.onedev.commons.utils.ExplicitException; import io.onedev.commons.utils.TaskLogger; @@ -15,26 +46,6 @@ import io.onedev.server.taskschedule.SchedulableTask; import io.onedev.server.taskschedule.TaskScheduler; import io.onedev.server.web.component.modal.ModalPanel; import io.onedev.server.web.component.taskbutton.TaskResult.PlainMessage; -import org.apache.commons.lang3.StringUtils; -import org.apache.shiro.authz.UnauthorizedException; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; -import org.apache.wicket.ajax.attributes.IAjaxCallListener; -import org.apache.wicket.ajax.markup.html.form.AjaxButton; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.request.cycle.RequestCycle; -import org.joda.time.DateTime; -import org.quartz.ScheduleBuilder; -import org.quartz.SimpleScheduleBuilder; - -import javax.inject.Inject; -import javax.inject.Singleton; - -import static io.onedev.server.web.translation.Translation._T; - -import java.util.*; -import java.util.concurrent.*; public abstract class TaskButton extends AjaxButton { @@ -58,7 +69,7 @@ public abstract class TaskButton extends AjaxButton { } protected String getTitle() { - return WordUtils.uncamel(getId()); + return _T(StringUtils.capitalize(WordUtils.uncamel(getId()).toLowerCase())); } @Override @@ -126,7 +137,6 @@ public abstract class TaskButton extends AjaxButton { protected void submitTask(AjaxRequestTarget target) { String path = getPath(); - String title = getTitle().toLowerCase(); ExecutorService executorService = OneDev.getInstance(ExecutorService.class); List messages = new ArrayList<>(); @@ -200,7 +210,7 @@ public abstract class TaskButton extends AjaxButton { @Override protected Component newContent(String id) { - return new TaskFeedbackPanel(id, _T(StringUtils.capitalize(title))) { + return new TaskFeedbackPanel(id, getTitle()) { @Override protected void onClose(AjaxRequestTarget target) { diff --git a/server-core/src/main/java/io/onedev/server/web/component/user/choice/UserMultiChoice.java b/server-core/src/main/java/io/onedev/server/web/component/user/choice/UserMultiChoice.java index e8b821170f..2d64fd689b 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/user/choice/UserMultiChoice.java +++ b/server-core/src/main/java/io/onedev/server/web/component/user/choice/UserMultiChoice.java @@ -1,5 +1,7 @@ package io.onedev.server.web.component.user.choice; +import static io.onedev.server.web.translation.Translation._T; + import java.util.Collection; import java.util.List; @@ -23,9 +25,9 @@ public class UserMultiChoice extends Select2MultiChoice { protected void onInitialize() { super.onInitialize(); if (isRequired()) - getSettings().setPlaceholder("Choose users..."); + getSettings().setPlaceholder(_T("Choose users...")); else - getSettings().setPlaceholder("Not specified"); + getSettings().setPlaceholder(_T("Not specified")); getSettings().setFormatResult("onedev.server.userChoiceFormatter.formatResult"); getSettings().setFormatSelection("onedev.server.userChoiceFormatter.formatSelection"); getSettings().setEscapeMarkup("onedev.server.userChoiceFormatter.escapeMarkup"); diff --git a/server-core/src/main/java/io/onedev/server/web/component/user/choice/UserSingleChoice.java b/server-core/src/main/java/io/onedev/server/web/component/user/choice/UserSingleChoice.java index 8475ba9bc1..cbf31bfa8b 100644 --- a/server-core/src/main/java/io/onedev/server/web/component/user/choice/UserSingleChoice.java +++ b/server-core/src/main/java/io/onedev/server/web/component/user/choice/UserSingleChoice.java @@ -1,5 +1,7 @@ package io.onedev.server.web.component.user.choice; +import static io.onedev.server.web.translation.Translation._T; + import java.util.List; import org.apache.wicket.markup.head.IHeaderResponse; @@ -20,9 +22,9 @@ public class UserSingleChoice extends Select2Choice { super.onInitialize(); getSettings().setAllowClear(!isRequired()); if (isRequired()) - getSettings().setPlaceholder("Choose a user..."); + getSettings().setPlaceholder(_T("Choose a user...")); else - getSettings().setPlaceholder("Not specified"); + getSettings().setPlaceholder(_T("Not specified")); getSettings().setFormatResult("onedev.server.userChoiceFormatter.formatResult"); getSettings().setFormatSelection("onedev.server.userChoiceFormatter.formatSelection"); getSettings().setEscapeMarkup("onedev.server.userChoiceFormatter.escapeMarkup"); diff --git a/server-core/src/main/java/io/onedev/server/web/editable/groupchoice/GroupChoiceEditSupport.java b/server-core/src/main/java/io/onedev/server/web/editable/groupchoice/GroupChoiceEditSupport.java index a53ebc5a84..4516f1fb00 100644 --- a/server-core/src/main/java/io/onedev/server/web/editable/groupchoice/GroupChoiceEditSupport.java +++ b/server-core/src/main/java/io/onedev/server/web/editable/groupchoice/GroupChoiceEditSupport.java @@ -92,7 +92,7 @@ public class GroupChoiceEditSupport implements EditSupport { }; } else { - throw new RuntimeException("Annotation 'TeamChoice' should be applied to property with type String or Collection"); + throw new RuntimeException("Annotation 'GroupChoice' should be applied to property with type String or Collection"); } } else { return null; diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/alertsettings/AlertSettingPage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/alertsettings/AlertSettingPage.java index 9f7dd7edd2..8c32002776 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/alertsettings/AlertSettingPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/alertsettings/AlertSettingPage.java @@ -4,6 +4,9 @@ import io.onedev.server.OneDev; import io.onedev.server.entitymanager.SettingManager; import io.onedev.server.web.editable.BeanContext; import io.onedev.server.web.page.admin.AdministrationPage; + +import static io.onedev.server.web.translation.Translation._T; + import org.apache.wicket.Component; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; @@ -27,7 +30,7 @@ public class AlertSettingPage extends AdministrationPage { protected void onSubmit() { super.onSubmit(); OneDev.getInstance(SettingManager.class).saveAlertSetting(alertSetting); - getSession().success("Alert settings have been updated"); + getSession().success(_T("Alert settings have been updated")); setResponsePage(AlertSettingPage.class); } @@ -40,7 +43,7 @@ public class AlertSettingPage extends AdministrationPage { @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Alert Settings"); + return new Label(componentId, _T("Alert Settings")); } } diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/authenticator/AuthenticatorPage.html b/server-core/src/main/java/io/onedev/server/web/page/admin/authenticator/AuthenticatorPage.html index 943585b782..46570726da 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/authenticator/AuthenticatorPage.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/authenticator/AuthenticatorPage.html @@ -3,7 +3,7 @@
- +
@@ -11,15 +11,15 @@
diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/authenticator/AuthenticatorPage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/authenticator/AuthenticatorPage.java index 194e0cd69b..f6c951d779 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/authenticator/AuthenticatorPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/authenticator/AuthenticatorPage.java @@ -26,6 +26,8 @@ import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.util.visit.IVisit; import org.apache.wicket.util.visit.IVisitor; +import static io.onedev.server.web.translation.Translation._T; + import java.io.Serializable; public class AuthenticatorPage extends AdministrationPage { @@ -52,10 +54,16 @@ public class AuthenticatorPage extends AdministrationPage { super.onSubmit(); OneDev.getInstance(SettingManager.class).saveAuthenticator(bean.getAuthenticator()); - getSession().success("External authenticator settings saved"); + getSession().success(_T("External authenticator settings saved")); } }; + var fullNameLabel = _T("Full Name"); + var emailLabel = _T("Email"); + var groupsLabel = _T("Groups"); + var sshKeysLabel = _T("Number of SSH Keys"); + var testSuccessfulLabel = _T("Test successful: authentication passed"); + var testSuccessfulWithInfoLabel = _T("Test successful: authentication passed with below information retrieved:"); TaskButton testButton = new TaskButton("test") { @Override @@ -136,31 +144,29 @@ public class AuthenticatorPage extends AdministrationPage { new UsernamePasswordToken(token.getUserName(), token.getPassword())); StringBuilder retrievedInfoBuilder = new StringBuilder(); if (authenticated.getFullName() != null) { - retrievedInfoBuilder.append("Full Name: ") + retrievedInfoBuilder.append(fullNameLabel + ": ") .append(authenticated.getFullName()) .append("
"); } if (authenticated.getEmail() != null) { - retrievedInfoBuilder.append("Email: ") + retrievedInfoBuilder.append(emailLabel + ": ") .append(authenticated.getEmail()) .append("
"); } if (authenticated.getGroupNames() != null) { - retrievedInfoBuilder.append("Groups: ") + retrievedInfoBuilder.append(groupsLabel + ": ") .append(Joiner.on(", ").join(authenticated.getGroupNames())) .append("
"); } if (authenticated.getSshKeys() != null) { - retrievedInfoBuilder.append("Number of SSH Keys: ").append(authenticated.getSshKeys().size()) + retrievedInfoBuilder.append(sshKeysLabel + ": ").append(authenticated.getSshKeys().size()) .append("
"); } - StringBuilder messageBuilder = - new StringBuilder("Test successful: authentication passed"); - if (retrievedInfoBuilder.length() != 0) { - messageBuilder.append(" with below information retrieved:
") - .append(retrievedInfoBuilder); - } - return new TaskResult(true, new HtmlMessgae(messageBuilder.toString())); + + if (retrievedInfoBuilder.length() != 0) + return new TaskResult(true, new HtmlMessgae(testSuccessfulWithInfoLabel + "
" + retrievedInfoBuilder)); + else + return new TaskResult(true, new HtmlMessgae(testSuccessfulLabel)); } }; @@ -189,7 +195,7 @@ public class AuthenticatorPage extends AdministrationPage { @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "External Authenticator"); + return new Label(componentId, _T("External Authenticator")); } } \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/brandingsetting/BrandingSettingPage.html b/server-core/src/main/java/io/onedev/server/web/page/admin/brandingsetting/BrandingSettingPage.html index 697af83f1a..f3dcbc1f63 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/brandingsetting/BrandingSettingPage.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/brandingsetting/BrandingSettingPage.html @@ -4,7 +4,7 @@
- Use Default + Use Default
diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/brandingsetting/BrandingSettingPage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/brandingsetting/BrandingSettingPage.java index 1a3c7d4755..7097cbe466 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/brandingsetting/BrandingSettingPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/brandingsetting/BrandingSettingPage.java @@ -1,5 +1,7 @@ package io.onedev.server.web.page.admin.brandingsetting; +import static io.onedev.server.web.translation.Translation._T; + import java.io.File; import java.io.IOException; import java.net.URL; @@ -94,7 +96,7 @@ public class BrandingSettingPage extends AdministrationPage { var bytes = getLogoBytes(bean.getDarkLogoData()); getClusterManager().runOnAllServers(new UpdateLogoTask(bytes, true)); } - Session.get().success("Branding settings updated"); + Session.get().success(_T("Branding settings updated")); } }; add(form); @@ -109,7 +111,7 @@ public class BrandingSettingPage extends AdministrationPage { getClusterManager().runOnAllServers(new UpdateLogoTask(null, false)); getClusterManager().runOnAllServers(new UpdateLogoTask(null, true)); setResponsePage(BrandingSettingPage.class); - Session.get().success("Default branding settings restored"); + Session.get().success(_T("Default branding settings restored")); } @Override @@ -124,7 +126,7 @@ public class BrandingSettingPage extends AdministrationPage { @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Branding"); + return new Label(componentId, _T("Branding")); } private SettingManager getSettingManager() { diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AddAgentPanel.html b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AddAgentPanel.html index fc1687adeb..3e58d4fafd 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AddAgentPanel.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AddAgentPanel.html @@ -1,60 +1,60 @@
-
Connect New Agent
+
Connect New Agent
- Show Command -
(a new agent token will be generated each time this button is pressed)
+ Show Command +
(a new agent token will be generated each time this button is pressed)
-
Follow below steps to install agent on remote machine (supports Linux/Windows/Mac OS X/FreeBSD):
+
Follow below steps to install agent on remote machine (supports Linux/Windows/Mac OS X/FreeBSD):
    -
  1. Make sure Java 11 or higher is installed
  2. -
  3. Make sure docker engine is installed and docker command line is available in system path
  4. -
  5. Make sure current user has permission to run docker containers
  6. -
  7. Make sure git version 2.11.1 or higher is installed and available in system path
  8. -
  9. Make sure git-lfs is installed and available in system path if you want to retrieve LFS files
  10. -
  11. Download agent.zip or agent.tar.gz. A new agent token will be included in the package
  12. -
  13. Extract the package into a folder. Warning: On Mac OS X, do not extract to Mac managed +
  14. Make sure Java 11 or higher is installed
  15. +
  16. Make sure docker engine is installed and docker command line is available in system path
  17. +
  18. Make sure current user has permission to run docker containers
  19. +
  20. Make sure git version 2.11.1 or higher is installed and available in system path
  21. +
  22. Make sure git-lfs is installed and available in system path if you want to retrieve LFS files
  23. +
  24. Download agent.zip or agent.tar.gz. A new agent token will be included in the package
  25. +
  26. Extract the package into a folder. Warning: On Mac OS X, do not extract to Mac managed folders such as Downloads, Desktop, Documents; otherwise you may encounter permission issues - starting agent
  27. + starting agent
  28. - Change property serverUrl in file conf/agent.properties if necessary. The default value is - taken from OneDev server url specified in Administration / System Setting + Change property serverUrl in file conf/agent.properties if necessary. The default value is + taken from OneDev server url specified in Administration / System Setting
  29. -
  30. From extracted folder, run bin\agent.bat console as administrator on Windows or bin/agent.sh console on other OS
  31. +
  32. From extracted folder, run bin\agent.bat console as administrator on Windows or bin/agent.sh console on other OS
  • - Agent is designed to be maintenance free. Once connected to server, it will be updated automatically - upon server upgrade + Agent is designed to be maintenance free. Once connected to server, it will be updated automatically + upon server upgrade
  • - Check agent management for details, including instructions on how to run agent as service + Check agent management for details, including instructions on how to run agent as service
- Start agent on remote Linux machine by running below command: + Start agent on remote Linux machine by running below command:
  • - Environment variable serverUrl in above command is taken from OneDev server url - specified in Administration / System Setting. Change it if necessary + Environment variable serverUrl in above command is taken from OneDev server url + specified in Administration / System Setting. Change it if necessary
  • - Agent is designed to be maintenance free. Once connected to server, it will be updated automatically - upon server upgrade + Agent is designed to be maintenance free. Once connected to server, it will be updated automatically + upon server upgrade
  • - Check agent management for details, including list of supported environment variables + Check agent management for details, including list of supported environment variables
diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AddAgentPanel.java b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AddAgentPanel.java index 6972092c28..e32e25474f 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AddAgentPanel.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AddAgentPanel.java @@ -1,5 +1,7 @@ package io.onedev.server.web.page.admin.buildsetting.agent; +import static io.onedev.server.web.translation.Translation._T; + import java.util.ArrayList; import java.util.List; @@ -34,7 +36,7 @@ class AddAgentPanel extends Panel { List tabs = new ArrayList<>(); - tabs.add(new AjaxActionTab(Model.of("Run via Docker Container")) { + tabs.add(new AjaxActionTab(Model.of(_T("Run via Docker Container"))) { @Override protected void onSelect(AjaxRequestTarget target, Component tabLink) { @@ -44,7 +46,7 @@ class AddAgentPanel extends Panel { } }); - tabs.add(new AjaxActionTab(Model.of("Run on Bare Metal/Virtual Machine")) { + tabs.add(new AjaxActionTab(Model.of(_T("Run on Bare Metal/Virtual Machine"))) { @Override protected void onSelect(AjaxRequestTarget target, Component tabLink) { diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentDetailPage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentDetailPage.java index c856340f79..2777b80f2c 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentDetailPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentDetailPage.java @@ -1,13 +1,11 @@ package io.onedev.server.web.page.admin.buildsetting.agent; -import io.onedev.commons.utils.ExplicitException; -import io.onedev.server.OneDev; -import io.onedev.server.entitymanager.AgentManager; -import io.onedev.server.model.Agent; -import io.onedev.server.web.component.tabbable.PageTab; -import io.onedev.server.web.component.tabbable.Tab; -import io.onedev.server.web.component.tabbable.Tabbable; -import io.onedev.server.web.page.admin.AdministrationPage; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.List; + import org.apache.wicket.Component; import org.apache.wicket.markup.head.CssHeaderItem; import org.apache.wicket.markup.head.IHeaderResponse; @@ -17,8 +15,14 @@ import org.apache.wicket.model.LoadableDetachableModel; import org.apache.wicket.model.Model; import org.apache.wicket.request.mapper.parameter.PageParameters; -import java.util.ArrayList; -import java.util.List; +import io.onedev.commons.utils.ExplicitException; +import io.onedev.server.OneDev; +import io.onedev.server.entitymanager.AgentManager; +import io.onedev.server.model.Agent; +import io.onedev.server.web.component.tabbable.PageTab; +import io.onedev.server.web.component.tabbable.Tab; +import io.onedev.server.web.component.tabbable.Tabbable; +import io.onedev.server.web.page.admin.AdministrationPage; public abstract class AgentDetailPage extends AdministrationPage { @@ -34,7 +38,7 @@ public abstract class AgentDetailPage extends AdministrationPage { Agent agent = OneDev.getInstance(AgentManager.class).findByName(agentName); if (agent == null) - throw new ExplicitException("Unable to find agent " + agentName); + throw new ExplicitException(MessageFormat.format(_T("Unable to find agent {0}"), agentName)); Long agentId = agent.getId(); @@ -57,9 +61,9 @@ public abstract class AgentDetailPage extends AdministrationPage { List tabs = new ArrayList<>(); - tabs.add(new PageTab(Model.of("Overview"), AgentOverviewPage.class, AgentOverviewPage.paramsOf(getAgent()))); - tabs.add(new PageTab(Model.of("Builds"), AgentBuildsPage.class, AgentBuildsPage.paramsOf(getAgent()))); - tabs.add(new PageTab(Model.of("Log"), AgentLogPage.class, AgentLogPage.paramsOf(getAgent()))); + tabs.add(new PageTab(Model.of(_T("Overview")), AgentOverviewPage.class, AgentOverviewPage.paramsOf(getAgent()))); + tabs.add(new PageTab(Model.of(_T("Builds")), AgentBuildsPage.class, AgentBuildsPage.paramsOf(getAgent()))); + tabs.add(new PageTab(Model.of(_T("Log")), AgentLogPage.class, AgentLogPage.paramsOf(getAgent()))); add(new Tabbable("agentTabs", tabs).setOutputMarkupId(true)); } diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentFilterPanel.html b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentFilterPanel.html index a41c11dc43..527407ea6d 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentFilterPanel.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentFilterPanel.html @@ -1,18 +1,18 @@
- +
- +
- +
- +
- +
- +
- +
diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentFilterPanel.java b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentFilterPanel.java index 421609df6c..a5cc883aad 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentFilterPanel.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentFilterPanel.java @@ -1,11 +1,13 @@ package io.onedev.server.web.page.admin.buildsetting.agent; +import static io.onedev.server.web.translation.Translation._T; import static java.util.stream.Collectors.toList; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Date; +import java.util.LinkedHashMap; import java.util.List; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -13,8 +15,7 @@ import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.model.IModel; import org.apache.wicket.model.LoadableDetachableModel; - -import com.google.common.collect.Lists; +import org.apache.wicket.model.Model; import io.onedev.server.OneDev; import io.onedev.server.entitymanager.AgentManager; @@ -47,6 +48,10 @@ class AgentFilterPanel extends FilterEditPanel { protected void onInitialize() { super.onInitialize(); + var statusChoices = new LinkedHashMap(); + statusChoices.put("Online", _T("Online")); + statusChoices.put("Offline", _T("Offline")); + var statusChoice = new StringSingleChoice("status", new IModel() { @Override @@ -76,13 +81,8 @@ class AgentFilterPanel extends FilterEditPanel { getModel().setObject(query); } - }, new LoadableDetachableModel>() { + }, Model.ofList(new ArrayList<>(statusChoices.keySet())), Model.ofMap(statusChoices), false); - @Override - protected List load() { - return Lists.newArrayList("Online", "Offline"); - } - }, false); statusChoice.add(new AjaxFormComponentUpdatingBehavior("change") { @Override diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentListPage.html b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentListPage.html index 8a8a4c9382..6e9c3867f7 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentListPage.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentListPage.html @@ -1,8 +1,8 @@
- Agents can be used to execute jobs on remote machines. Once started it will update itself - from server automatically when necessary + Agents can be used to execute jobs on remote machines. Once started it will update itself + from server automatically when necessary
diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentListPage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentListPage.java index 8c3aa31b76..6fe0956582 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentListPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentListPage.java @@ -27,6 +27,9 @@ import org.apache.wicket.request.cycle.RequestCycle; import org.apache.wicket.request.mapper.parameter.PageParameters; import javax.annotation.Nullable; + +import static io.onedev.server.web.translation.Translation._T; + import java.io.Serializable; import java.util.ArrayList; @@ -217,7 +220,7 @@ public class AgentListPage extends AdministrationPage { @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Agents"); + return new Label(componentId, _T("Agents")); } } diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentListPanel.html b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentListPanel.html index fc3b78fb37..67ed7e435b 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentListPanel.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentListPanel.html @@ -14,22 +14,22 @@
@@ -40,10 +40,10 @@
- CPU + CPU - Memory + Memory diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentListPanel.java b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentListPanel.java index 0de2c4e6b2..e85cd4eece 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentListPanel.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentListPanel.java @@ -1,5 +1,8 @@ package io.onedev.server.web.page.admin.buildsetting.agent; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashMap; @@ -82,7 +85,7 @@ class AgentListPanel extends Panel { error(e.getMessage()); return null; } else { - info("Performing fuzzy query. Enclosing search text with '~' to add more conditions, for instance: ~text to search~ and online"); + info(_T("Performing fuzzy query. Enclosing search text with '~' to add more conditions, for instance: ~text to search~ and online")); return new AgentQuery(new FuzzyCriteria(queryString)); } } @@ -185,9 +188,9 @@ class AgentListPanel extends Panel { if (!isEnabled()) tag.append("class", "disabled", " "); if (!querySubmitted) - tag.put("title", "Query not submitted"); + tag.put("data-tippy-content", _T("Query not submitted")); else if (queryModel.getObject() == null) - tag.put("title", "Can not save malformed query"); + tag.put("data-tippy-content", _T("Can not save malformed query")); } @Override @@ -278,7 +281,7 @@ class AgentListPanel extends Panel { @Override public String getLabel() { - return "Pause Selected Agents"; + return _T("Pause Selected Agents"); } @Override @@ -293,7 +296,7 @@ class AgentListPanel extends Panel { target.add(countLabel); target.add(body); selectionColumn.getSelections().clear(); - Session.get().success("Paused selected agents"); + Session.get().success(_T("Paused selected agents")); } @Override @@ -308,7 +311,7 @@ class AgentListPanel extends Panel { configure(); if (!isEnabled()) { tag.put("disabled", "disabled"); - tag.put("title", "Please select agents to pause"); + tag.put("data-tippy-content", _T("Please select agents to pause")); } } @@ -321,7 +324,7 @@ class AgentListPanel extends Panel { @Override public String getLabel() { - return "Resume Selected Agents"; + return _T("Resume Selected Agents"); } @Override @@ -336,7 +339,7 @@ class AgentListPanel extends Panel { target.add(countLabel); target.add(body); selectionColumn.getSelections().clear(); - Session.get().success("Resumed selected agents"); + Session.get().success(_T("Resumed selected agents")); } @Override @@ -351,7 +354,7 @@ class AgentListPanel extends Panel { configure(); if (!isEnabled()) { tag.put("disabled", "disabled"); - tag.put("title", "Please select agents to resume"); + tag.put("data-tippy-content", _T("Please select agents to resume")); } } @@ -364,7 +367,7 @@ class AgentListPanel extends Panel { @Override public String getLabel() { - return "Restart Selected Agents"; + return _T("Restart Selected Agents"); } @Override @@ -384,12 +387,12 @@ class AgentListPanel extends Panel { target.add(countLabel); target.add(body); selectionColumn.getSelections().clear(); - Session.get().success("Restart command issued to selected agents"); + Session.get().success(_T("Restart command issued to selected agents")); } @Override protected String getConfirmMessage() { - return "Type yes below to restart selected agents"; + return _T("Type yes below to restart selected agents"); } @Override @@ -412,7 +415,7 @@ class AgentListPanel extends Panel { configure(); if (!isEnabled()) { tag.put("disabled", "disabled"); - tag.put("title", "Please select agents to restart"); + tag.put("data-tippy-content", _T("Please select agents to restart")); } } @@ -425,7 +428,7 @@ class AgentListPanel extends Panel { @Override public String getLabel() { - return "Remove Selected Agents"; + return _T("Remove Selected Agents"); } @Override @@ -449,7 +452,7 @@ class AgentListPanel extends Panel { @Override protected String getConfirmMessage() { - return "Removed selected agents. Type yes below to confirm"; + return _T("Removed selected agents. Type yes below to confirm"); } @Override @@ -473,7 +476,7 @@ class AgentListPanel extends Panel { configure(); if (!isEnabled()) { tag.put("disabled", "disabled"); - tag.put("title", "Please select agents to remove"); + tag.put("data-tippy-content", _T("Please select agents to remove")); } } @@ -486,7 +489,7 @@ class AgentListPanel extends Panel { @Override public String getLabel() { - return "Pause All Queried Agents"; + return _T("Pause All Queried Agents"); } @Override @@ -508,12 +511,12 @@ class AgentListPanel extends Panel { dataProvider.detach(); target.add(countLabel); target.add(body); - Session.get().success("Paused all queried agents"); + Session.get().success(_T("Paused all queried agents")); } @Override protected String getConfirmMessage() { - return "Type yes below to pause all queried agents"; + return _T("Type yes below to pause all queried agents"); } @Override @@ -537,7 +540,7 @@ class AgentListPanel extends Panel { configure(); if (!isEnabled()) { tag.put("disabled", "disabled"); - tag.put("title", "No agents to pause"); + tag.put("data-tippy-content", _T("No agents to pause")); } } @@ -550,7 +553,7 @@ class AgentListPanel extends Panel { @Override public String getLabel() { - return "Resume All Queried Agents"; + return _T("Resume All Queried Agents"); } @Override @@ -572,12 +575,12 @@ class AgentListPanel extends Panel { target.add(countLabel); target.add(body); selectionColumn.getSelections().clear(); - Session.get().success("Resumed all queried agents"); + Session.get().success(_T("Resumed all queried agents")); } @Override protected String getConfirmMessage() { - return "Type yes below to resume all queried agents"; + return _T("Type yes below to resume all queried agents"); } @Override @@ -601,7 +604,7 @@ class AgentListPanel extends Panel { configure(); if (!isEnabled()) { tag.put("disabled", "disabled"); - tag.put("title", "No agents to resume"); + tag.put("data-tippy-content", _T("No agents to resume")); } } @@ -614,7 +617,7 @@ class AgentListPanel extends Panel { @Override public String getLabel() { - return "Restart All Queried Agents"; + return _T("Restart All Queried Agents"); } @Override @@ -636,12 +639,12 @@ class AgentListPanel extends Panel { target.add(countLabel); target.add(body); selectionColumn.getSelections().clear(); - Session.get().success("Restart command issued to all queried agents"); + Session.get().success(_T("Restart command issued to all queried agents")); } @Override protected String getConfirmMessage() { - return "Type yes below to restart all queried agents"; + return _T("Type yes below to restart all queried agents"); } @Override @@ -665,7 +668,7 @@ class AgentListPanel extends Panel { configure(); if (!isEnabled()) { tag.put("disabled", "disabled"); - tag.put("title", "No agents to restart"); + tag.put("data-tippy-content", _T("No agents to restart")); } } @@ -678,7 +681,7 @@ class AgentListPanel extends Panel { @Override public String getLabel() { - return "Remove All Queried Agents"; + return _T("Remove All Queried Agents"); } @Override @@ -704,7 +707,7 @@ class AgentListPanel extends Panel { @Override protected String getConfirmMessage() { - return "Removed all queried agents. Type yes below to confirm"; + return _T("Removed all queried agents. Type yes below to confirm"); } @Override @@ -728,7 +731,7 @@ class AgentListPanel extends Panel { configure(); if (!isEnabled()) { tag.put("disabled", "disabled"); - tag.put("title", "No agents to remove"); + tag.put("data-tippy-content", _T("No agents to remove")); } } @@ -791,9 +794,9 @@ class AgentListPanel extends Panel { @Override public String getObject() { if (dataProvider.size() > 1) - return "found " + dataProvider.size() + " agents"; + return MessageFormat.format(_T("found {0} agents"), dataProvider.size()); else - return "found 1 agent"; + return _T("found 1 agent"); } }) { @Override @@ -853,7 +856,7 @@ class AgentListPanel extends Panel { columns.add(selectionColumn = new SelectionColumn()); - columns.add(new AbstractColumn<>(Model.of("Name")) { + columns.add(new AbstractColumn<>(Model.of(_T("Name"))) { @Override public void populateItem(Item> cellItem, String componentId, IModel rowModel) { @@ -869,7 +872,7 @@ class AgentListPanel extends Panel { }); - columns.add(new AbstractColumn<>(Model.of("IP Address")) { + columns.add(new AbstractColumn<>(Model.of(_T("IP Address"))) { @Override public void populateItem(Item> cellItem, String componentId, IModel rowModel) { @@ -884,7 +887,7 @@ class AgentListPanel extends Panel { }); - columns.add(new AbstractColumn<>(Model.of("Status")) { + columns.add(new AbstractColumn<>(Model.of(_T("Status"))) { @Override public void populateItem(Item> cellItem, String componentId, IModel rowModel) { diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentLogPage.html b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentLogPage.html index c37b0c499d..2d43dc55c7 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentLogPage.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentLogPage.html @@ -3,13 +3,13 @@ -
Log not available for offline agent
+
Log not available for offline agent
\ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentLogPage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentLogPage.java index b60ffee2f3..7ea41cdeba 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentLogPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentLogPage.java @@ -2,7 +2,9 @@ package io.onedev.server.web.page.admin.buildsetting.agent; import static io.onedev.agent.job.LogRequest.toZoneId; import static io.onedev.server.util.DateUtils.getZoneId; +import static io.onedev.server.web.translation.Translation._T; +import java.text.MessageFormat; import java.util.List; import org.apache.wicket.markup.html.WebMarkupContainer; @@ -39,7 +41,7 @@ public class AgentLogPage extends AgentDetailPage { List lines = OneDev.getInstance(AgentManager.class).getAgentLog(getAgent()); String content; if (lines.size() > MAX_DISPLAY_LINES) { - fragment.add(new Label("warning", "Too many log entries, displaying recent " + MAX_DISPLAY_LINES)); + fragment.add(new Label("warning", MessageFormat.format(_T("Too many log entries, displaying recent {0}"), MAX_DISPLAY_LINES))); content = Joiner.on("\n").join(toZoneId(lines.subList(lines.size()-MAX_DISPLAY_LINES, lines.size()), getZoneId())); } else { fragment.add(new WebMarkupContainer("warning").setVisible(false)); diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentOverviewPage.html b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentOverviewPage.html index da3b13a7a3..abe6067697 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentOverviewPage.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentOverviewPage.html @@ -1,16 +1,16 @@ - - - - - + + + + + @@ -36,7 +36,7 @@
NameIP AddressOS VersionOS ArchStatusNameIP AddressOS VersionOS ArchStatus
- Access Token: + Access Token: @@ -49,12 +49,12 @@ -
Attributes (can only be edited when agent is online)
+
Attributes (can only be edited when agent is online)
- - + + @@ -66,6 +66,6 @@ -
No attributes defined (can only be edited when agent is online)
+
No attributes defined (can only be edited when agent is online)
\ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentOverviewPage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentOverviewPage.java index ea544cb41c..e2c9a1dee4 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentOverviewPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/AgentOverviewPage.java @@ -20,6 +20,8 @@ import org.apache.wicket.model.AbstractReadOnlyModel; import org.apache.wicket.model.LoadableDetachableModel; import org.apache.wicket.request.mapper.parameter.PageParameters; +import static io.onedev.server.web.translation.Translation._T; + import java.util.*; public class AgentOverviewPage extends AgentDetailPage { @@ -42,10 +44,10 @@ public class AgentOverviewPage extends AgentDetailPage { public void onClick() { getAgentManager().restart(getAgent()); setResponsePage(AgentOverviewPage.class, AgentOverviewPage.paramsOf(getAgent())); - Session.get().success("Restart command issued"); + Session.get().success(_T("Restart command issued")); } - }.add(new ConfirmClickModifier("Do you really want to restart this agent?"))); + }.add(new ConfirmClickModifier(_T("Do you really want to restart this agent?")))); add(new Link("remove") { @@ -53,10 +55,10 @@ public class AgentOverviewPage extends AgentDetailPage { public void onClick() { getAgentManager().delete(getAgent()); setResponsePage(AgentListPage.class); - Session.get().success("Agent removed"); + Session.get().success(_T("Agent removed")); } - }.add(new ConfirmClickModifier("Do you really want to remove this agent?"))); + }.add(new ConfirmClickModifier(_T("Do you really want to remove this agent?")))); add(new Link("pauseOrResume") { @@ -67,7 +69,7 @@ public class AgentOverviewPage extends AgentDetailPage { @Override public String getObject() { - return getAgent().isPaused()?"Resume":"Pause"; + return getAgent().isPaused()?_T("Resume"):_T("Pause"); } })); @@ -112,7 +114,7 @@ public class AgentOverviewPage extends AgentDetailPage { token.setValue(UUID.randomUUID().toString()); OneDev.getInstance(AgentTokenManager.class).createOrUpdate(token); OneDev.getInstance(AgentManager.class).disconnect(getAgent().getId()); - Session.get().success("Access token regenerated, make sure to update the token at agent side"); + Session.get().success(_T("Access token regenerated, make sure to update the token at agent side")); setResponsePage(AgentOverviewPage.class, paramsOf(getAgent())); } }); @@ -133,7 +135,7 @@ public class AgentOverviewPage extends AgentDetailPage { attributeMap.put(attribute.getName(), attribute.getValue()); OneDev.getInstance(AgentAttributeManager.class).syncAttributes(getAgent(), attributeMap); getAgentManager().attributesUpdated(getAgent()); - Session.get().success("Attributes saved"); + Session.get().success(_T("Attributes saved")); } }; diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/TokenListPanel.html b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/TokenListPanel.html index 82aff2a2cc..c77eebe19c 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/TokenListPanel.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/TokenListPanel.html @@ -1,15 +1,15 @@
-
Available Agent Tokens
+
Available Agent Tokens
- Agent tokens are used to authorize agents. It should be configured via environment variable + Agent tokens are used to authorize agents. It should be configured via environment variable agentToken if agent runs as docker container, or property agentToken in file <agent dir>/conf/agent.properties if agent runs on bare metal/virtual machine. - A token will be in-use and removed from this list if agent using it connects to server + A token will be in-use and removed from this list if agent using it connects to server
NameValueNameValue
diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/TokenListPanel.java b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/TokenListPanel.java index 8764543171..38441dab74 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/TokenListPanel.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent/TokenListPanel.java @@ -1,5 +1,7 @@ package io.onedev.server.web.page.admin.buildsetting.agent; +import static io.onedev.server.web.translation.Translation._T; + import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -70,7 +72,7 @@ public class TokenListPanel extends GenericPanel> { @Override protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { super.updateAjaxAttributes(attributes); - attributes.getAjaxCallListeners().add(new ConfirmClickListener("Do you really want to delete unused tokens?")); + attributes.getAjaxCallListeners().add(new ConfirmClickListener(_T("Do you really want to delete unused tokens?"))); } @Override @@ -90,7 +92,7 @@ public class TokenListPanel extends GenericPanel> { List> columns = new ArrayList<>(); - columns.add(new AbstractColumn(Model.of("Value")) { + columns.add(new AbstractColumn(Model.of(_T("Value"))) { @Override public void populateItem(Item> cellItem, String componentId, diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorEditPanel.html b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorEditPanel.html index 571b8bb28b..9bdba284c8 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorEditPanel.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorEditPanel.html @@ -2,8 +2,8 @@
- - - + + +
\ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorEditPanel.java b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorEditPanel.java index c16b554140..3dd8ec2dfa 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorEditPanel.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorEditPanel.java @@ -26,6 +26,9 @@ import org.apache.wicket.util.visit.IVisit; import org.apache.wicket.util.visit.IVisitor; import javax.annotation.Nullable; + +import static io.onedev.server.web.translation.Translation._T; + import java.io.Serializable; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.ParameterizedType; @@ -94,11 +97,11 @@ abstract class JobExecutorEditPanel extends Panel { JobExecutor oldExecutor = executors.get(executorIndex); if (!executor.getName().equals(oldExecutor.getName()) && getExecutor(executor.getName()) != null) { editor.error(new Path(new PathNode.Named("executor"), new PathNode.Named("name")), - "This name has already been used by another job executor"); + _T("This name has already been used by another job executor")); } } else if (getExecutor(executor.getName()) != null) { editor.error(new Path(new PathNode.Named("executor"), new PathNode.Named("name")), - "This name has already been used by another job executor"); + _T("This name has already been used by another job executor")); } if (editor.isValid()) { @@ -202,7 +205,7 @@ abstract class JobExecutorEditPanel extends Panel { @Override protected TaskResult runTask(TaskLogger logger) { ((Testable)bean.getExecutor()).test(testData, logger); - return new TaskResult(true, new PlainMessage("Job executor tested successfully")); + return new TaskResult(true, new PlainMessage(_T("Job executor tested successfully"))); } }; diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorPanel.html b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorPanel.html index 0dd8202893..5cfa6dff92 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorPanel.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorPanel.html @@ -13,7 +13,7 @@ - Disabled + Disabled
diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorPanel.java b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorPanel.java index 5c3e1ee7ed..ad1e45955a 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorPanel.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorPanel.java @@ -14,6 +14,8 @@ import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.LoadableDetachableModel; import org.apache.wicket.model.Model; +import static io.onedev.server.web.translation.Translation._T; + import java.util.List; abstract class JobExecutorPanel extends Panel { @@ -63,7 +65,7 @@ abstract class JobExecutorPanel extends Panel { @Override protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { super.updateAjaxAttributes(attributes); - attributes.getAjaxCallListeners().add(new ConfirmClickListener("Do you really want to delete this executor?")); + attributes.getAjaxCallListeners().add(new ConfirmClickListener(_T("Do you really want to delete this executor?"))); } @Override diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorsPage.html b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorsPage.html index 7b34a79e3a..37ceb056f8 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorsPage.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorsPage.html @@ -6,7 +6,7 @@
  • - No executors defined. Jobs will use auto-discovered executor with default settings + No executors defined. Jobs will use auto-discovered executor with default settings
    @@ -15,7 +15,7 @@
    -
    Edit Executor
    +
    Edit Executor
    @@ -26,7 +26,7 @@ diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorsPage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorsPage.java index 1ccd0e8587..c29a66d2b4 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorsPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor/JobExecutorsPage.java @@ -18,6 +18,8 @@ import org.apache.wicket.markup.html.panel.Fragment; import org.apache.wicket.model.AbstractReadOnlyModel; import org.apache.wicket.request.mapper.parameter.PageParameters; +import static io.onedev.server.web.translation.Translation._T; + import java.util.List; public class JobExecutorsPage extends AdministrationPage { @@ -137,7 +139,7 @@ public class JobExecutorsPage extends AdministrationPage { @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Job Executors"); + return new Label(componentId, _T("Job Executors")); } } diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/databasebackup/DatabaseBackupPage.html b/server-core/src/main/java/io/onedev/server/web/page/admin/databasebackup/DatabaseBackupPage.html index d6d046aceb..62cccbc92a 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/databasebackup/DatabaseBackupPage.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/databasebackup/DatabaseBackupPage.html @@ -2,12 +2,12 @@
    -
    If enabled, scheduled backup will run on lead server which is currently
    +
    If enabled, scheduled backup will run on lead server which is currently
    - Backup Now + Backup Now
    diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/databasebackup/DatabaseBackupPage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/databasebackup/DatabaseBackupPage.java index 04a3480422..cc876a62f9 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/databasebackup/DatabaseBackupPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/databasebackup/DatabaseBackupPage.java @@ -17,6 +17,8 @@ import org.apache.wicket.model.LoadableDetachableModel; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.request.resource.AbstractResource; +import static io.onedev.server.web.translation.Translation._T; + import java.io.File; import java.io.IOException; @@ -54,7 +56,7 @@ public class DatabaseBackupPage extends AdministrationPage { protected void onSubmit() { super.onSubmit(); OneDev.getInstance(SettingManager.class).saveBackupSetting(backupSettingHolder.getBackupSetting()); - getSession().success("Backup settings updated"); + getSession().success(_T("Backup settings updated")); setResponsePage(DatabaseBackupPage.class); } @@ -95,7 +97,7 @@ public class DatabaseBackupPage extends AdministrationPage { @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Database Backup"); + return new Label(componentId, _T("Database Backup")); } } diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/AbstractNotificationTemplatePage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/AbstractNotificationTemplatePage.java index ffc33b7f8c..3d7519647a 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/AbstractNotificationTemplatePage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/AbstractNotificationTemplatePage.java @@ -1,5 +1,7 @@ package io.onedev.server.web.page.admin.emailtemplates; +import static io.onedev.server.web.translation.Translation._T; + import java.util.Map; import org.apache.wicket.request.mapper.parameter.PageParameters; @@ -21,13 +23,13 @@ public abstract class AbstractNotificationTemplatePage extends AbstractTemplateP @Override protected String getTemplateHelp(String helpText, Map variableHelp) { var currentVaribaleHelp = CollectionUtils.newLinkedHashMap( - "event", "event object triggering the notification", - "eventSummary", "a string representing summary of the event", - "eventBody", "a string representing body of the event. May be null", - "eventUrl", "a string representing event detail url", - "replyable", "a boolean indiciating whether or not topic comment can be created directly by replying the email", - "unsubscribable", "an object holding unsubscribe information. " - + " A null value means that the notification can not be unsubscribed" + "event", _T("event object triggering the notification"), + "eventSummary", _T("a string representing summary of the event"), + "eventBody", _T("a string representing body of the event. May be null"), + "eventUrl", _T("a string representing event detail url"), + "replyable", _T("a boolean indiciating whether or not topic comment can be created directly by replying the email"), + "unsubscribable", _T("an object holding unsubscribe information. " + + " A null value means that the notification can not be unsubscribed") ); currentVaribaleHelp.putAll(variableHelp); diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/AbstractSimpleNotificationTemplatePage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/AbstractSimpleNotificationTemplatePage.java index fc233cd6b8..a04615f479 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/AbstractSimpleNotificationTemplatePage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/AbstractSimpleNotificationTemplatePage.java @@ -4,6 +4,8 @@ import io.onedev.server.model.support.administration.emailtemplates.EmailTemplat import io.onedev.server.util.CollectionUtils; import org.apache.wicket.request.mapper.parameter.PageParameters; +import static io.onedev.server.web.translation.Translation._T; + import java.util.Map; public abstract class AbstractSimpleNotificationTemplatePage extends AbstractTemplatePage { @@ -20,10 +22,10 @@ public abstract class AbstractSimpleNotificationTemplatePage extends AbstractTem @Override protected String getTemplateHelp(String helpText, Map variableHelp) { var currentVaribaleHelp = CollectionUtils.newLinkedHashMap( - "event", "event object triggering the notification", - "eventSummary", "a string representing summary of the event", - "eventBody", "a string representing body of the event. May be null", - "eventUrl", "a string representing event detail url" + "event", _T("event object triggering the notification"), + "eventSummary", _T("a string representing summary of the event"), + "eventBody", _T("a string representing body of the event. May be null"), + "eventUrl", _T("a string representing event detail url") ); currentVaribaleHelp.putAll(variableHelp); diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/AbstractTemplatePage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/AbstractTemplatePage.java index fb718edf7f..6d334b81c0 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/AbstractTemplatePage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/AbstractTemplatePage.java @@ -18,12 +18,14 @@ import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.request.mapper.parameter.PageParameters; +import static io.onedev.server.web.translation.Translation._T; + import java.util.LinkedHashMap; import java.util.Map; public abstract class AbstractTemplatePage extends AdministrationPage { - protected final String GROOVY_TEMPLATE_LINK = "Groovy simple template"; + protected static final String GROOVY_TEMPLATE_LINK = "Groovy simple template"; public AbstractTemplatePage(PageParameters params) { super(params); @@ -50,7 +52,7 @@ public abstract class AbstractTemplatePage extends AdministrationPage { super.onSubmit(); getSettingManager().saveEmailTemplates(templates); - getSession().success("Template saved"); + getSession().success(_T("Template saved")); } }; @@ -61,7 +63,7 @@ public abstract class AbstractTemplatePage extends AdministrationPage { @Override protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { super.updateAjaxAttributes(attributes); - attributes.getAjaxCallListeners().add(new ConfirmClickListener("Do you really want to use default template?")); + attributes.getAjaxCallListeners().add(new ConfirmClickListener(_T("Do you really want to use default template?"))); } @Override @@ -107,10 +109,10 @@ public abstract class AbstractTemplatePage extends AdministrationPage { StringBuilder builder = new StringBuilder(helpText); if (!builder.toString().endsWith(".")) builder.append("."); - builder.append(" When evaluating this template, below variables will be available:
      "); + builder.append(" " + _T("When evaluating this template, below variables will be available:") + "
        "); var currentVariableHelp = new LinkedHashMap(); - currentVariableHelp.put("htmlVersion", "true for html version, false for text version"); + currentVariableHelp.put("htmlVersion", _T("true for html version, false for text version")); currentVariableHelp.putAll(variableHelp); for (Map.Entry entry: currentVariableHelp.entrySet()) diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/AlertTemplatePage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/AlertTemplatePage.java index 0a24fab6b3..bb2d1cb533 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/AlertTemplatePage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/AlertTemplatePage.java @@ -5,9 +5,11 @@ import org.apache.wicket.Component; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.request.mapper.parameter.PageParameters; +import java.text.MessageFormat; import java.util.Map; import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.*; +import static io.onedev.server.web.translation.Translation._T; public class AlertTemplatePage extends AbstractTemplatePage { @@ -27,19 +29,19 @@ public class AlertTemplatePage extends AbstractTemplatePage { @Override protected String getHelpText() { - return "A " + GROOVY_TEMPLATE_LINK + " used as body of system alert email"; + return MessageFormat.format(_T("A {0} used as body of system alert email"), GROOVY_TEMPLATE_LINK); } @Override protected Map getVariableHelp() { return CollectionUtils.newLinkedHashMap( - "alert", "alert to display", - "serverUrl", "root url of OneDev server"); + "alert", _T("alert to display"), + "serverUrl", _T("root url of OneDev server")); } @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "System Alert Template"); + return new Label(componentId, _T("System Alert Template")); } } \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/BuildNotificationTemplatePage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/BuildNotificationTemplatePage.java index e9cc3d5638..7e1967c1b8 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/BuildNotificationTemplatePage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/BuildNotificationTemplatePage.java @@ -1,13 +1,16 @@ package io.onedev.server.web.page.admin.emailtemplates; -import io.onedev.server.util.CollectionUtils; +import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_BUILD_NOTIFICATION; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; +import java.util.Map; + import org.apache.wicket.Component; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.request.mapper.parameter.PageParameters; -import java.util.Map; - -import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_BUILD_NOTIFICATION; +import io.onedev.server.util.CollectionUtils; public class BuildNotificationTemplatePage extends AbstractSimpleNotificationTemplatePage { @@ -22,18 +25,18 @@ public class BuildNotificationTemplatePage extends AbstractSimpleNotificationTem @Override protected String getHelpText() { - return "A " + GROOVY_TEMPLATE_LINK + " used as body of build notification email"; + return MessageFormat.format(_T("A {0} used as body of build notification email"), GROOVY_TEMPLATE_LINK); } @Override protected Map getVariableHelp() { return CollectionUtils.newLinkedHashMap("build", - "represents the build object to be notified"); + _T("represents the build object to be notified")); } @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Build Notification Template"); + return new Label(componentId, _T("Build Notification Template")); } } \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/CommitNotificationTemplatePage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/CommitNotificationTemplatePage.java index e574fc9829..20003bd63e 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/CommitNotificationTemplatePage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/CommitNotificationTemplatePage.java @@ -1,13 +1,16 @@ package io.onedev.server.web.page.admin.emailtemplates; -import io.onedev.server.util.CollectionUtils; +import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_COMMIT_NOTIFICATION; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; +import java.util.Map; + import org.apache.wicket.Component; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.request.mapper.parameter.PageParameters; -import java.util.Map; - -import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_COMMIT_NOTIFICATION; +import io.onedev.server.util.CollectionUtils; public class CommitNotificationTemplatePage extends AbstractSimpleNotificationTemplatePage { @@ -22,18 +25,18 @@ public class CommitNotificationTemplatePage extends AbstractSimpleNotificationTe @Override protected String getHelpText() { - return "A " + GROOVY_TEMPLATE_LINK + " used as body of commit notification email"; + return MessageFormat.format(_T("A {0} used as body of commit notification email"), GROOVY_TEMPLATE_LINK); } @Override protected Map getVariableHelp() { return CollectionUtils.newLinkedHashMap("commit", - "represents the commit object to be notified"); + _T("represents the commit object to be notified")); } @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Commit Notification Template"); + return new Label(componentId, _T("Commit Notification Template")); } } \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/EmailVerificationTemplatePage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/EmailVerificationTemplatePage.java index cfe4522be9..bff8427c63 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/EmailVerificationTemplatePage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/EmailVerificationTemplatePage.java @@ -1,13 +1,17 @@ package io.onedev.server.web.page.admin.emailtemplates; -import io.onedev.server.util.CollectionUtils; +import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.DEFAULT_EMAIL_VERIFICATION; +import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_EMAIL_VERIFICATION; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; +import java.util.Map; + import org.apache.wicket.Component; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.request.mapper.parameter.PageParameters; -import java.util.Map; - -import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.*; +import io.onedev.server.util.CollectionUtils; public class EmailVerificationTemplatePage extends AbstractTemplatePage { @@ -27,21 +31,21 @@ public class EmailVerificationTemplatePage extends AbstractTemplatePage { @Override protected String getHelpText() { - return "A " + GROOVY_TEMPLATE_LINK + " used as body of address verification email"; + return MessageFormat.format(_T("A {0} used as body of address verification email"), GROOVY_TEMPLATE_LINK); } @Override protected Map getVariableHelp() { return CollectionUtils.newLinkedHashMap( - "user", "user to verify email for", - "emailAddress", "Email address to verify", - "serverUrl", "root url of OneDev server", - "verificationUrl", "url following which to verify email address"); + "user", _T("user to verify email for"), + "emailAddress", _T("Email address to verify"), + "serverUrl", _T("root url of OneDev server"), + "verificationUrl", _T("url following which to verify email address")); } @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Email Verification Template"); + return new Label(componentId, _T("Email Verification Template")); } } \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/IssueNotificationTemplatePage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/IssueNotificationTemplatePage.java index 7598652142..bb496ca7dd 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/IssueNotificationTemplatePage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/IssueNotificationTemplatePage.java @@ -1,13 +1,16 @@ package io.onedev.server.web.page.admin.emailtemplates; -import io.onedev.server.util.CollectionUtils; +import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_ISSUE_NOTIFICATION; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; +import java.util.Map; + import org.apache.wicket.Component; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.request.mapper.parameter.PageParameters; -import java.util.Map; - -import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_ISSUE_NOTIFICATION; +import io.onedev.server.util.CollectionUtils; public class IssueNotificationTemplatePage extends AbstractNotificationTemplatePage { @@ -22,18 +25,18 @@ public class IssueNotificationTemplatePage extends AbstractNotificationTemplateP @Override protected String getHelpText() { - return "A " + GROOVY_TEMPLATE_LINK + " used as body of various issue notification emails"; + return MessageFormat.format(_T("A {0} used as body of various issue notification emails"), GROOVY_TEMPLATE_LINK); } @Override protected Map getVariableHelp() { return CollectionUtils.newLinkedHashMap("issue", - "represents the issue object to be notified"); + _T("represents the issue object to be notified")); } @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Issue Notification Template"); + return new Label(componentId, _T("Issue Notification Template")); } } \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/IssueNotificationUnsubscribedTemplatePage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/IssueNotificationUnsubscribedTemplatePage.java index 8a5d5bb441..accdbbeb3d 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/IssueNotificationUnsubscribedTemplatePage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/IssueNotificationUnsubscribedTemplatePage.java @@ -2,7 +2,9 @@ package io.onedev.server.web.page.admin.emailtemplates; import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.DEFAULT_ISSUE_NOTIFICATION_UNSUBSCRIBED; import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_ISSUE_NOTIFICATION_UNSUBSCRIBED; +import static io.onedev.server.web.translation.Translation._T; +import java.text.MessageFormat; import java.util.Map; import org.apache.wicket.Component; @@ -29,19 +31,18 @@ public class IssueNotificationUnsubscribedTemplatePage extends AbstractTemplateP @Override protected String getHelpText() { - return "A " + GROOVY_TEMPLATE_LINK + " used as body of feedback email when unsubscribed " + - "from issue notification"; + return MessageFormat.format(_T("A {0} used as body of feedback email when unsubscribed from issue notification"), GROOVY_TEMPLATE_LINK); } @Override protected Map getVariableHelp() { return CollectionUtils.newLinkedHashMap("issue", - "represents the unsubscribed issue"); + _T("represents the unsubscribed issue")); } @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Issue Notification Unsubscribed Template"); + return new Label(componentId, _T("Issue Notification Unsubscribed Template")); } } \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/PackNotificationTemplatePage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/PackNotificationTemplatePage.java index 432f0c8f67..efd8ca0684 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/PackNotificationTemplatePage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/PackNotificationTemplatePage.java @@ -1,13 +1,16 @@ package io.onedev.server.web.page.admin.emailtemplates; -import io.onedev.server.util.CollectionUtils; +import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_PACK_NOTIFICATION; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; +import java.util.Map; + import org.apache.wicket.Component; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.request.mapper.parameter.PageParameters; -import java.util.Map; - -import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_PACK_NOTIFICATION; +import io.onedev.server.util.CollectionUtils; public class PackNotificationTemplatePage extends AbstractSimpleNotificationTemplatePage { @@ -22,18 +25,18 @@ public class PackNotificationTemplatePage extends AbstractSimpleNotificationTemp @Override protected String getHelpText() { - return "A " + GROOVY_TEMPLATE_LINK + " used as body of package notification email"; + return MessageFormat.format(_T("A {0} used as body of package notification email"), GROOVY_TEMPLATE_LINK); } @Override protected Map getVariableHelp() { return CollectionUtils.newLinkedHashMap("pack", - "represents the package object to be notified"); + _T("represents the package object to be notified")); } @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Package Notification Template"); + return new Label(componentId, _T("Package Notification Template")); } } \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/PasswordResetTemplatePage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/PasswordResetTemplatePage.java index 176dce8848..f252f10fd7 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/PasswordResetTemplatePage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/PasswordResetTemplatePage.java @@ -1,13 +1,17 @@ package io.onedev.server.web.page.admin.emailtemplates; -import io.onedev.server.util.CollectionUtils; +import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.DEFAULT_PASSWORD_RESET; +import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_PASSWORD_RESET; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; +import java.util.Map; + import org.apache.wicket.Component; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.request.mapper.parameter.PageParameters; -import java.util.Map; - -import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.*; +import io.onedev.server.util.CollectionUtils; public class PasswordResetTemplatePage extends AbstractTemplatePage { @@ -27,19 +31,19 @@ public class PasswordResetTemplatePage extends AbstractTemplatePage { @Override protected String getHelpText() { - return "A " + GROOVY_TEMPLATE_LINK + " used as body of password reset email"; + return MessageFormat.format(_T("A {0} used as body of password reset email"), GROOVY_TEMPLATE_LINK); } @Override protected Map getVariableHelp() { return CollectionUtils.newLinkedHashMap( - "user", "user to reset password for", - "passwordResetUrl", "url to reset password"); + "user", _T("user to reset password for"), + "passwordResetUrl", _T("url to reset password")); } @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Password Reset Template"); + return new Label(componentId, _T("Password Reset Template")); } } \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/PullRequestNotificationTemplatePage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/PullRequestNotificationTemplatePage.java index 89617504af..c6553e54b1 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/PullRequestNotificationTemplatePage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/PullRequestNotificationTemplatePage.java @@ -1,13 +1,16 @@ package io.onedev.server.web.page.admin.emailtemplates; -import io.onedev.server.util.CollectionUtils; +import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_PULL_REQUEST_NOTIFICATION; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; +import java.util.Map; + import org.apache.wicket.Component; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.request.mapper.parameter.PageParameters; -import java.util.Map; - -import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_PULL_REQUEST_NOTIFICATION; +import io.onedev.server.util.CollectionUtils; public class PullRequestNotificationTemplatePage extends AbstractNotificationTemplatePage { @@ -22,18 +25,18 @@ public class PullRequestNotificationTemplatePage extends AbstractNotificationTem @Override protected String getHelpText() { - return "A " + GROOVY_TEMPLATE_LINK + " used as body of various pull request notification emails"; + return MessageFormat.format(_T("A {0} used as body of various pull request notification emails"), GROOVY_TEMPLATE_LINK); } @Override protected Map getVariableHelp() { return CollectionUtils.newLinkedHashMap("pullRequest", - "represents the pull request object to be notified"); + _T("represents the pull request object to be notified")); } @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Pull Request Notification Template"); + return new Label(componentId, _T("Pull Request Notification Template")); } } \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/PullRequestNotificationUnsubscribedTemplatePage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/PullRequestNotificationUnsubscribedTemplatePage.java index 846103fa55..2535e0453b 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/PullRequestNotificationUnsubscribedTemplatePage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/PullRequestNotificationUnsubscribedTemplatePage.java @@ -2,7 +2,9 @@ package io.onedev.server.web.page.admin.emailtemplates; import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.DEFAULT_PULL_REQUEST_NOTIFICATION_UNSUBSCRIBED; import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_PULL_REQUEST_NOTIFICATION_UNSUBSCRIBED; +import static io.onedev.server.web.translation.Translation._T; +import java.text.MessageFormat; import java.util.Map; import org.apache.wicket.Component; @@ -29,19 +31,18 @@ public class PullRequestNotificationUnsubscribedTemplatePage extends AbstractTem @Override protected String getHelpText() { - return "A " + GROOVY_TEMPLATE_LINK + " used as body of feedback email when unsubscribed " + - "from pull request notification"; + return MessageFormat.format(_T("A {0} used as body of feedback email when unsubscribed from pull request notification"), GROOVY_TEMPLATE_LINK); } @Override protected Map getVariableHelp() { return CollectionUtils.newLinkedHashMap("pullRequest", - "represents the unsubscribed pull request"); + _T("represents the unsubscribed pull request")); } @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Pull Request Notification Unsubscribed Template"); + return new Label(componentId, _T("Pull Request Notification Unsubscribed Template")); } } \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/ServiceDeskIssueOpenFailedTemplatePage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/ServiceDeskIssueOpenFailedTemplatePage.java index 6ce6c2e61a..df2bd52e4e 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/ServiceDeskIssueOpenFailedTemplatePage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/ServiceDeskIssueOpenFailedTemplatePage.java @@ -2,7 +2,9 @@ package io.onedev.server.web.page.admin.emailtemplates; import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.DEFAULT_SERVICE_DESK_ISSUE_OPEN_FAILED; import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_SERVICE_DESK_ISSUE_OPEN_FAILED; +import static io.onedev.server.web.translation.Translation._T; +import java.text.MessageFormat; import java.util.Map; import org.apache.wicket.Component; @@ -29,19 +31,18 @@ public class ServiceDeskIssueOpenFailedTemplatePage extends AbstractTemplatePage @Override protected String getHelpText() { - return "A " + GROOVY_TEMPLATE_LINK + " used as body of feedback email when failed to open issue " + - "via service desk"; + return MessageFormat.format(_T("A {0} used as body of feedback email when failed to open issue via service desk"), GROOVY_TEMPLATE_LINK); } @Override protected Map getVariableHelp() { return CollectionUtils.newLinkedHashMap("exception", - "represents the exception encountered when open issue via service desk"); + _T("represents the exception encountered when open issue via service desk")); } @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Service Desk Issue Open Failed Template"); + return new Label(componentId, _T("Service Desk Issue Open Failed Template")); } } \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/ServiceDeskIssueOpenedTemplatePage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/ServiceDeskIssueOpenedTemplatePage.java index ac7e73ea9b..0abfeba0c5 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/ServiceDeskIssueOpenedTemplatePage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/ServiceDeskIssueOpenedTemplatePage.java @@ -2,7 +2,9 @@ package io.onedev.server.web.page.admin.emailtemplates; import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.DEFAULT_SERVICE_DESK_ISSUE_OPENED; import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_SERVICE_DESK_ISSUE_OPENED; +import static io.onedev.server.web.translation.Translation._T; +import java.text.MessageFormat; import java.util.Map; import org.apache.wicket.Component; @@ -29,19 +31,18 @@ public class ServiceDeskIssueOpenedTemplatePage extends AbstractTemplatePage { @Override protected String getHelpText() { - return "A " + GROOVY_TEMPLATE_LINK + " used as body of feedback email when issue is opened " + - "via service desk"; + return MessageFormat.format(_T("A {0} used as body of feedback email when issue is opened via service desk"), GROOVY_TEMPLATE_LINK); } @Override protected Map getVariableHelp() { return CollectionUtils.newLinkedHashMap("issue", - "represents the issue being opened via service desk"); + _T("represents the issue being opened via service desk")); } @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Service Desk Issue Opened Template"); + return new Label(componentId, _T("Service Desk Issue Opened Template")); } } \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/StopwatchOverdueTemplatePage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/StopwatchOverdueTemplatePage.java index 02932c25af..c1974d7fa6 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/StopwatchOverdueTemplatePage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/StopwatchOverdueTemplatePage.java @@ -1,13 +1,17 @@ package io.onedev.server.web.page.admin.emailtemplates; -import io.onedev.server.util.CollectionUtils; +import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.DEFAULT_STOPWATCH_OVERDUE; +import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_STOPWATCH_OVERDUE; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; +import java.util.Map; + import org.apache.wicket.Component; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.request.mapper.parameter.PageParameters; -import java.util.Map; - -import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.*; +import io.onedev.server.util.CollectionUtils; public class StopwatchOverdueTemplatePage extends AbstractTemplatePage { @@ -27,18 +31,18 @@ public class StopwatchOverdueTemplatePage extends AbstractTemplatePage { @Override protected String getHelpText() { - return "A " + GROOVY_TEMPLATE_LINK + " used as body of issue stopwatch overdue notification email"; + return MessageFormat.format(_T("A {0} used as body of issue stopwatch overdue notification email"), GROOVY_TEMPLATE_LINK); } @Override protected Map getVariableHelp() { return CollectionUtils.newLinkedHashMap( - "stopwatch", "Stopwatch overdue"); + "stopwatch", _T("Stopwatch overdue")); } @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Issue Stopwatch Overdue Notification Template"); + return new Label(componentId, _T("Issue Stopwatch Overdue Notification Template")); } } \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/UserInvitationTemplatePage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/UserInvitationTemplatePage.java index dfd007cc8d..0577f4468a 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/UserInvitationTemplatePage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates/UserInvitationTemplatePage.java @@ -1,13 +1,17 @@ package io.onedev.server.web.page.admin.emailtemplates; -import io.onedev.server.util.CollectionUtils; +import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.DEFAULT_USER_INVITATION; +import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.PROP_USER_INVITATION; +import static io.onedev.server.web.translation.Translation._T; + +import java.text.MessageFormat; +import java.util.Map; + import org.apache.wicket.Component; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.request.mapper.parameter.PageParameters; -import java.util.Map; - -import static io.onedev.server.model.support.administration.emailtemplates.EmailTemplates.*; +import io.onedev.server.util.CollectionUtils; public class UserInvitationTemplatePage extends AbstractTemplatePage { @@ -27,17 +31,17 @@ public class UserInvitationTemplatePage extends AbstractTemplatePage { @Override protected String getHelpText() { - return "A " + GROOVY_TEMPLATE_LINK + " used as body of user invitation email"; + return MessageFormat.format(_T("A {0} used as body of user invitation email"), GROOVY_TEMPLATE_LINK); } @Override protected Map getVariableHelp() { - return CollectionUtils.newLinkedHashMap("setupAccountUrl", "the url to set up user account"); + return CollectionUtils.newLinkedHashMap("setupAccountUrl", _T("the url to set up user account")); } @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "User Invitation Template"); + return new Label(componentId, _T("User Invitation Template")); } } \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/gpgsigningkey/GpgSigningKeyPage.html b/server-core/src/main/java/io/onedev/server/web/page/admin/gpgsigningkey/GpgSigningKeyPage.html index 857f151ad0..20c9614ed5 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/gpgsigningkey/GpgSigningKeyPage.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/gpgsigningkey/GpgSigningKeyPage.html @@ -2,26 +2,27 @@
        - GPG signing key will be used to sign commits generated by OneDev, including + GPG signing key will be used to sign commits generated by OneDev, including pull request merge commits, user commits created via web UI or RESTful api. +
        - Generate + Generate
        -
        Email Address
        +
        Email Address
        -
        Key ID
        +
        Key ID
        -
        Public Key
        +
        Public Key
        
         			
        - Delete + Delete
        \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/gpgsigningkey/GpgSigningKeyPage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/gpgsigningkey/GpgSigningKeyPage.java index 94df42a771..d28b73ff72 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/gpgsigningkey/GpgSigningKeyPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/gpgsigningkey/GpgSigningKeyPage.java @@ -1,5 +1,7 @@ package io.onedev.server.web.page.admin.gpgsigningkey; +import static io.onedev.server.web.translation.Translation._T; + import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -69,8 +71,8 @@ public class GpgSigningKeyPage extends AdministrationPage { @Override protected String getConfirmMessage() { - return "Commits generated by OneDev previously will be shown as unverified if this key is deleted. " - + "Type yes below if you want to continue."; + return _T("Commits generated by OneDev previously will be shown as unverified if this key is deleted. " + + "Type yes below if you want to continue."); } @Override @@ -119,7 +121,7 @@ public class GpgSigningKeyPage extends AdministrationPage { @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "GPG Signing Key"); + return new Label(componentId, _T("GPG Signing Key")); } } diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/gpgtrustedkeys/GpgTrustedKeysPage.html b/server-core/src/main/java/io/onedev/server/web/page/admin/gpgtrustedkeys/GpgTrustedKeysPage.html index ec7f709783..9b9a0bc928 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/gpgtrustedkeys/GpgTrustedKeysPage.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/gpgtrustedkeys/GpgTrustedKeysPage.html @@ -2,7 +2,7 @@
        - Add GPG public keys to be trusted here. Commits signed with trusted keys will be shown as verified. + Add GPG public keys to be trusted here. Commits signed with trusted keys will be shown as verified.
        @@ -14,7 +14,7 @@
        @@ -23,7 +23,7 @@
        diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/gpgtrustedkeys/GpgTrustedKeysPage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/gpgtrustedkeys/GpgTrustedKeysPage.java index f35e4b5b86..12393ace1b 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/gpgtrustedkeys/GpgTrustedKeysPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/gpgtrustedkeys/GpgTrustedKeysPage.java @@ -1,5 +1,7 @@ package io.onedev.server.web.page.admin.gpgtrustedkeys; +import static io.onedev.server.web.translation.Translation._T; + import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -89,7 +91,7 @@ public class GpgTrustedKeysPage extends AdministrationPage { if (bean.getKeyIds().stream().anyMatch(it-> setting.getTrustedSignatureVerificationKey(it) != null)) { editor.error( new Path(new PathNode.Named(BaseGpgKey.PROP_CONTENT)), - "This key or one of its sub key is already added"); + _T("This key or one of its sub key is already added")); target.add(form); } else { setting.getEncodedTrustedKeys().put(bean.getKeyIds().get(0), bean.getContent()); @@ -126,7 +128,7 @@ public class GpgTrustedKeysPage extends AdministrationPage { List> columns = new ArrayList<>(); - columns.add(new AbstractColumn(Model.of("Key ID")) { + columns.add(new AbstractColumn(Model.of(_T("Key ID"))) { @Override public void populateItem(Item> cellItem, String componentId, @@ -137,7 +139,7 @@ public class GpgTrustedKeysPage extends AdministrationPage { }); - columns.add(new AbstractColumn(Model.of("Email Addresses")) { + columns.add(new AbstractColumn(Model.of(_T("Email Addresses"))) { @Override public void populateItem(Item> cellItem, String componentId, @@ -149,7 +151,7 @@ public class GpgTrustedKeysPage extends AdministrationPage { }); - columns.add(new AbstractColumn(Model.of("Sub Keys")) { + columns.add(new AbstractColumn(Model.of(_T("Sub Keys"))) { @Override public void populateItem(Item> cellItem, String componentId, @@ -164,7 +166,7 @@ public class GpgTrustedKeysPage extends AdministrationPage { if (subKeyIds.length() != 0) cellItem.add(new MultilineLabel(componentId, subKeyIds)); else - cellItem.add(new Label(componentId, "None").setEscapeModelStrings(false)); + cellItem.add(new Label(componentId, "" + _T("None") + "").setEscapeModelStrings(false)); } @Override @@ -189,14 +191,14 @@ public class GpgTrustedKeysPage extends AdministrationPage { setting.getEncodedTrustedKeys().remove(rowModel.getObject()); setting.encodedTrustedKeysUpdated(); getSettingManager().saveGpgSetting(setting); - Session.get().success("GPG key deleted"); + Session.get().success(_T("GPG key deleted")); target.add(trustedKeysTable); } @Override protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { super.updateAjaxAttributes(attributes); - String message = "Do you really want to delete this GPG key?"; + String message = _T("Do you really want to delete this GPG key?"); attributes.getAjaxCallListeners().add(new ConfirmClickListener(message)); } @@ -250,7 +252,7 @@ public class GpgTrustedKeysPage extends AdministrationPage { @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "GPG Trusted Keys"); + return new Label(componentId, _T("GPG Trusted Keys")); } } diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/groovyscript/GroovyScriptEditPanel.html b/server-core/src/main/java/io/onedev/server/web/page/admin/groovyscript/GroovyScriptEditPanel.html index c2efa2724f..b31dd66713 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/groovyscript/GroovyScriptEditPanel.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/groovyscript/GroovyScriptEditPanel.html @@ -1,7 +1,7 @@
        \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/groovyscript/GroovyScriptEditPanel.java b/server-core/src/main/java/io/onedev/server/web/page/admin/groovyscript/GroovyScriptEditPanel.java index 99d82ddbdd..465b7e21dd 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/groovyscript/GroovyScriptEditPanel.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/groovyscript/GroovyScriptEditPanel.java @@ -1,5 +1,7 @@ package io.onedev.server.web.page.admin.groovyscript; +import static io.onedev.server.web.translation.Translation._T; + import java.util.List; import javax.annotation.Nullable; @@ -79,11 +81,11 @@ abstract class GroovyScriptEditPanel extends Panel { GroovyScript oldScript = getScripts().get(scriptIndex); if (!script.getName().equals(oldScript.getName()) && getScript(script.getName()) != null) { editor.error(new Path(new PathNode.Named("name")), - "This name has already been used by another script"); + _T("This name has already been used by another script")); } } else if (getScript(script.getName()) != null) { editor.error(new Path(new PathNode.Named("name")), - "This name has already been used by another script"); + _T("This name has already been used by another script")); } if (editor.isValid()) { diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/groovyscript/GroovyScriptListPage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/groovyscript/GroovyScriptListPage.java index c2b42b1188..0434dfb92b 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/groovyscript/GroovyScriptListPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/groovyscript/GroovyScriptListPage.java @@ -1,5 +1,7 @@ package io.onedev.server.web.page.admin.groovyscript; +import static io.onedev.server.web.translation.Translation._T; + import java.util.ArrayList; import java.util.List; @@ -105,21 +107,21 @@ public class GroovyScriptListPage extends AdministrationPage { }); - columns.add(new AbstractColumn<>(Model.of("Name")) { + columns.add(new AbstractColumn<>(Model.of(_T("Name"))) { @Override public void populateItem(Item> cellItem, String componentId, IModel rowModel) { cellItem.add(new Label(componentId, rowModel.getObject().getName())); } }); - columns.add(new AbstractColumn<>(Model.of("Can Be Used By Jobs")) { + columns.add(new AbstractColumn<>(Model.of(_T("Can Be Used By Jobs"))) { @Override public void populateItem(Item> cellItem, String componentId, IModel rowModel) { - cellItem.add(new Label(componentId, TextUtils.getDisplayValue(rowModel.getObject().isCanBeUsedByBuildJobs()))); + cellItem.add(new Label(componentId, _T(TextUtils.getDisplayValue(rowModel.getObject().isCanBeUsedByBuildJobs())))); } }); - columns.add(new AbstractColumn<>(Model.of("Job Authorization")) { + columns.add(new AbstractColumn<>(Model.of(_T("Job Authorization"))) { @Override public void populateItem(Item> cellItem, String componentId, IModel rowModel) { @@ -128,9 +130,9 @@ public class GroovyScriptListPage extends AdministrationPage { if (script.getAuthorization() != null) cellItem.add(new Label(componentId, script.getAuthorization())); else - cellItem.add(new Label(componentId, "Any job").setEscapeModelStrings(false)); + cellItem.add(new Label(componentId, "" + _T("Any job") + "").setEscapeModelStrings(false)); } else { - cellItem.add(new Label(componentId, "N/A").setEscapeModelStrings(false)); + cellItem.add(new Label(componentId, "" + _T("N/A") + "").setEscapeModelStrings(false)); } } }); @@ -173,7 +175,7 @@ public class GroovyScriptListPage extends AdministrationPage { @Override protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { super.updateAjaxAttributes(attributes); - attributes.getAjaxCallListeners().add(new ConfirmClickListener("Do you really want to delete this script?")); + attributes.getAjaxCallListeners().add(new ConfirmClickListener(_T("Do you really want to delete this script?"))); } @Override @@ -224,7 +226,7 @@ public class GroovyScriptListPage extends AdministrationPage { @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Groovy Scripts"); + return new Label(componentId, _T("Groovy Scripts")); } } diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/commitmessagefixpatterns/CommitMessageFixPatternsPage.html b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/commitmessagefixpatterns/CommitMessageFixPatternsPage.html index 3e332f929c..6ea530e4a7 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/commitmessagefixpatterns/CommitMessageFixPatternsPage.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/commitmessagefixpatterns/CommitMessageFixPatternsPage.html @@ -1,9 +1,9 @@
        - Commit message can be used to fix issues + Commit message can be used to fix issues by prefixing and suffixing issue number with specified pattern. Each line of the commit message will be matched against each entry defined here to find - issues to be fixed + issues to be fixed
        diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/commitmessagefixpatterns/CommitMessageFixPatternsPage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/commitmessagefixpatterns/CommitMessageFixPatternsPage.java index 3404bf1807..1042f6390e 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/commitmessagefixpatterns/CommitMessageFixPatternsPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/commitmessagefixpatterns/CommitMessageFixPatternsPage.java @@ -5,6 +5,9 @@ import io.onedev.server.entitymanager.SettingManager; import io.onedev.server.model.support.issue.CommitMessageFixPatterns; import io.onedev.server.web.editable.BeanContext; import io.onedev.server.web.page.admin.issuesetting.IssueSettingPage; + +import static io.onedev.server.web.translation.Translation._T; + import org.apache.wicket.Component; import org.apache.wicket.Session; import org.apache.wicket.feedback.FencedFeedbackPanel; @@ -29,7 +32,7 @@ public class CommitMessageFixPatternsPage extends IssueSettingPage { super.onSubmit(); getSetting().setCommitMessageFixPatterns(patterns); getSettingManager().saveIssueSetting(getSetting()); - Session.get().success("Setting updated"); + Session.get().success(_T("Settings updated")); } }; form.add(new FencedFeedbackPanel("feedback", form)); @@ -43,7 +46,7 @@ public class CommitMessageFixPatternsPage extends IssueSettingPage { @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Commit Message Fix Patterns").setEscapeModelStrings(false); + return new Label(componentId, "" + _T("Commit Message Fix Patterns") + "").setEscapeModelStrings(false); } } diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/defaultboard/DefaultBoardListPage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/defaultboard/DefaultBoardListPage.java index 4ca45111d8..91cc20d60e 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/defaultboard/DefaultBoardListPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/defaultboard/DefaultBoardListPage.java @@ -96,7 +96,7 @@ public class DefaultBoardListPage extends IssueSettingPage { }); - columns.add(new AbstractColumn(Model.of("Name")) { + columns.add(new AbstractColumn(Model.of(_T("Name"))) { @Override public void populateItem(Item> cellItem, String componentId, IModel rowModel) { @@ -104,7 +104,7 @@ public class DefaultBoardListPage extends IssueSettingPage { } }); - columns.add(new AbstractColumn(Model.of("Columns")) { + columns.add(new AbstractColumn(Model.of(_T("Columns"))) { @Override public void populateItem(Item> cellItem, String componentId, IModel rowModel) { @@ -114,7 +114,7 @@ public class DefaultBoardListPage extends IssueSettingPage { }); - columns.add(new AbstractColumn(Model.of("Identify Field")) { + columns.add(new AbstractColumn(Model.of(_T("Identify Field"))) { @Override public void populateItem(Item> cellItem, String componentId, IModel rowModel) { diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/externalissuepattern/ExternalIssueTransformersPage.html b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/externalissuepattern/ExternalIssueTransformersPage.html index c3ada67a9f..540004b7d2 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/externalissuepattern/ExternalIssueTransformersPage.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/externalissuepattern/ExternalIssueTransformersPage.html @@ -1,9 +1,9 @@
        - In case you are using external issue tracker, you can define transformers + In case you are using external issue tracker, you can define transformers to transform external issue references into external issue links in various - places, such as commit messages and pull request descriptions + places, such as commit messages and pull request descriptions
        diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/externalissuepattern/ExternalIssueTransformersPage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/externalissuepattern/ExternalIssueTransformersPage.java index c460cf4910..312a15c1b9 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/externalissuepattern/ExternalIssueTransformersPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/externalissuepattern/ExternalIssueTransformersPage.java @@ -1,5 +1,7 @@ package io.onedev.server.web.page.admin.issuesetting.externalissuepattern; +import static io.onedev.server.web.translation.Translation._T; + import org.apache.wicket.Component; import org.apache.wicket.Session; import org.apache.wicket.feedback.FencedFeedbackPanel; @@ -32,7 +34,7 @@ public class ExternalIssueTransformersPage extends IssueSettingPage { super.onSubmit(); getSetting().setExternalIssueTransformers(transformers); getSettingManager().saveIssueSetting(getSetting()); - Session.get().success("Setting updated"); + Session.get().success(_T("Settings updated")); } }; form.add(new FencedFeedbackPanel("feedback", form)); @@ -46,7 +48,7 @@ public class ExternalIssueTransformersPage extends IssueSettingPage { @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "External Issue Transformers"); + return new Label(componentId, _T("External Issue Transformers")); } } \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/integritycheck/CheckIssueIntegrityPage.html b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/integritycheck/CheckIssueIntegrityPage.html index fa2aba62e0..9d3669534d 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/integritycheck/CheckIssueIntegrityPage.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/integritycheck/CheckIssueIntegrityPage.html @@ -1,7 +1,7 @@
        - In rare cases, your issues might be out of sync with workflow settings (undefined state/field etc.). - Run integrity check below to find problems and get them fixed. + In rare cases, your issues might be out of sync with workflow settings (undefined state/field etc.). + Run integrity check below to find problems and get them fixed.
        - Run Integrity Check + Run Integrity Check
        diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/integritycheck/CheckIssueIntegrityPage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/integritycheck/CheckIssueIntegrityPage.java index 5f3f4acdfc..73817ff9f5 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/integritycheck/CheckIssueIntegrityPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/integritycheck/CheckIssueIntegrityPage.java @@ -4,6 +4,9 @@ import io.onedev.server.web.component.issue.workflowreconcile.WorkflowReconcileP import io.onedev.server.web.component.modal.ModalLink; import io.onedev.server.web.component.modal.ModalPanel; import io.onedev.server.web.page.admin.issuesetting.IssueSettingPage; + +import static io.onedev.server.web.translation.Translation._T; + import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.basic.Label; @@ -41,6 +44,6 @@ public class CheckIssueIntegrityPage extends IssueSettingPage { @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Check Issue Integrity"); + return new Label(componentId, _T("Check Issue Integrity")); } } diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/issuetemplate/IssueTemplateEditPanel.html b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/issuetemplate/IssueTemplateEditPanel.html index 27bf7ea486..cafe5682ca 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/issuetemplate/IssueTemplateEditPanel.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/issuetemplate/IssueTemplateEditPanel.html @@ -1,7 +1,7 @@ \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/issuetemplate/IssueTemplateListPage.html b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/issuetemplate/IssueTemplateListPage.html index 4bde0610b3..50715b09b9 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/issuetemplate/IssueTemplateListPage.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/issuetemplate/IssueTemplateListPage.html @@ -1,7 +1,7 @@
        - Define issue templates here. - When a new issue is created, the first matching template will be used. + Define issue templates here. + When a new issue is created, the first matching template will be used.
        diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/issuetemplate/IssueTemplateListPage.java b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/issuetemplate/IssueTemplateListPage.java index 61cbaf1530..d7d7cdc148 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/issuetemplate/IssueTemplateListPage.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/issuetemplate/IssueTemplateListPage.java @@ -33,6 +33,8 @@ import org.apache.wicket.model.Model; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.unbescape.html.HtmlEscape; +import static io.onedev.server.web.translation.Translation._T; + import java.util.ArrayList; import java.util.List; @@ -100,7 +102,7 @@ public class IssueTemplateListPage extends IssueSettingPage { }); - columns.add(new AbstractColumn(Model.of("Applicable Issues")) { + columns.add(new AbstractColumn(Model.of(_T("Applicable Issues"))) { @Override public void populateItem(Item> cellItem, String componentId, IModel rowModel) { @@ -151,7 +153,7 @@ public class IssueTemplateListPage extends IssueSettingPage { @Override protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { super.updateAjaxAttributes(attributes); - attributes.getAjaxCallListeners().add(new ConfirmClickListener("Do you really want to delete this template?")); + attributes.getAjaxCallListeners().add(new ConfirmClickListener(_T("Do you really want to delete this template?"))); } @Override @@ -208,7 +210,7 @@ public class IssueTemplateListPage extends IssueSettingPage { @Override protected Component newTopbarTitle(String componentId) { - return new Label(componentId, "Issue Description Templates").setEscapeModelStrings(false); + return new Label(componentId, "" + _T("Issue Description Templates") + "").setEscapeModelStrings(false); } } diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/linkspec/LinkSpecEditPanel.html b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/linkspec/LinkSpecEditPanel.html index 7c451803d7..47a56b362b 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/linkspec/LinkSpecEditPanel.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/linkspec/LinkSpecEditPanel.html @@ -1,7 +1,7 @@ \ No newline at end of file diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/linkspec/LinkSpecEditPanel.java b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/linkspec/LinkSpecEditPanel.java index fa01fd280f..46ba9cb5ea 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/linkspec/LinkSpecEditPanel.java +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/linkspec/LinkSpecEditPanel.java @@ -1,5 +1,7 @@ package io.onedev.server.web.page.admin.issuesetting.linkspec; +import static io.onedev.server.web.translation.Translation._T; + import java.io.Serializable; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -91,7 +93,7 @@ abstract class LinkSpecEditPanel extends GenericPanel { super.onSubmit(target, form); if (getSpec().getOpposite() != null && getSpec().getName().equals(getSpec().getOpposite().getName())) { - String errorMessage = "Name and name on the other side should be different"; + String errorMessage = _T("Name and name on the other side should be different"); editor.error(new Path(new PathNode.Named("name")), errorMessage); editor.error(new Path(new PathNode.Named("opposite"), new PathNode.Named("name")), errorMessage); target.add(form); @@ -100,13 +102,13 @@ abstract class LinkSpecEditPanel extends GenericPanel { LinkSpec specWithSameName = manager.find(getSpec().getName()); if (getSpec().isNew() && specWithSameName != null || !getSpec().isNew() && specWithSameName != null && !specWithSameName.equals(getSpec())) { - editor.error(new Path(new PathNode.Named("name")), "Name already used by another link"); + editor.error(new Path(new PathNode.Named("name")), _T("Name already used by another link")); target.add(form); } else if (getSpec().getOpposite() != null) { specWithSameName = manager.find(getSpec().getOpposite().getName()); if (getSpec().isNew() && specWithSameName != null || !getSpec().isNew() && specWithSameName != null && !specWithSameName.equals(getSpec())) { - String errorMessage = "Name already used by another link"; + String errorMessage = _T("Name already used by another link"); editor.error(new Path(new PathNode.Named("opposite"), new PathNode.Named("name")), errorMessage); target.add(form); } else { diff --git a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/linkspec/LinkSpecListPage.html b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/linkspec/LinkSpecListPage.html index 7d34c406d9..d5e99bc705 100644 --- a/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/linkspec/LinkSpecListPage.html +++ b/server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/linkspec/LinkSpecListPage.html @@ -1,8 +1,8 @@