properly localize pluralized "usages" word

GitOrigin-RevId: f334d43eba51f4f47d8b63533ffb51a16571e117
This commit is contained in:
Dmitry.Krasilschikov
2020-06-10 19:07:40 +03:00
committed by intellij-monorepo-bot
parent 899f51bcee
commit 2037ea615f
5 changed files with 34 additions and 14 deletions
@@ -86,7 +86,7 @@ public class FindUnusedTestDataAction extends DumbAwareAction {
"Unused Test Data",
p -> {
p.setCodeUsages(false);
p.setUsagesWord("file");
p.setUsagesWord(count -> ExecutionBundle.message("label.usages.word.file", count));
}, project));
}
});
@@ -540,3 +540,4 @@ popup.title.select.process.to.update=Select Process to Update
dialog.message.working.directory.null.for.project.module=Working directory is null for project ''{0}'' ({1}), module {2}
dialog.message.working.directory.doesn.t.exist=Working directory ''{0}'' doesn''t exist
do.not.build.before.run=Do not build before run
label.usages.word.file={0, choice, 1#file|2#files}
@@ -2,7 +2,7 @@ node.targets=Targets
node.non.code.usages=Non-code usages
node.usages.in.generated.code=Usages in generated code
node.found.usages=Found usages
usage.name=usage
usage.name={0, choice, 1#usage|2#usages}
usages.title=Usages
usages.n={0,choice, 0#no usages|1#1 usage|2#{0,number} usages} found
action.show.import.statements=Show import statements
@@ -4,7 +4,6 @@ package com.intellij.usages;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.ui.GuiUtils;
import com.intellij.usageView.UsageViewBundle;
import org.jetbrains.annotations.NotNull;
@@ -21,7 +20,7 @@ public final class UsageLimitUtil {
@NotNull final String message,
@NotNull final UsageViewPresentation usageViewPresentation) {
int result = runOrInvokeAndWait(() -> {
String title = UsageViewBundle.message("find.excessive.usages.title", StringUtil.capitalize(StringUtil.pluralize(usageViewPresentation.getUsagesWord())));
String title = UsageViewBundle.message("find.excessive.usages.title", usageViewPresentation.getUsagesWord(2));
return Messages.showOkCancelDialog(project, message,
title, UsageViewBundle.message("button.text.continue"), UsageViewBundle.message("button.text.abort"),
Messages.getWarningIcon());
@@ -1,17 +1,19 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.usages;
import static org.jetbrains.annotations.Nls.Capitalization.Title;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.usageView.UsageViewBundle;
import java.util.Objects;
import java.util.regex.Pattern;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Objects;
import java.util.function.Function;
import java.util.regex.Pattern;
import static org.jetbrains.annotations.Nls.Capitalization.Title;
public class UsageViewPresentation {
private static final Logger LOG = Logger.getInstance(UsageViewPresentation.class);
@@ -29,7 +31,7 @@ public class UsageViewPresentation {
private boolean myOpenInNewTab = true;
private boolean myCodeUsages = true;
private boolean myUsageTypeFilteringAvailable;
private String myUsagesWord = UsageViewBundle.message("usage.name");
private Function<Integer, String> myUsagesWordSupplier = count -> UsageViewBundle.message("usage.name", count);
private String myTabName;
private String myToolwindowTitle;
@@ -151,13 +153,29 @@ public class UsageViewPresentation {
myCodeUsages = codeUsages;
}
/**
* Use {@link #getUsagesWord(int)} instead
*/
@Deprecated
@NotNull
public String getUsagesWord() {
return myUsagesWord;
return myUsagesWordSupplier.apply(1);
}
/**
* Use {@link #setUsagesWord(Function)} instead
*/
@Deprecated
public void setUsagesWord(@NotNull String usagesWord) {
myUsagesWord = usagesWord;
myUsagesWordSupplier = count -> usagesWord;
}
public String getUsagesWord(int count) {
return myUsagesWordSupplier.apply(count);
}
public void setUsagesWord(@NotNull Function<Integer, String> usagesWordSupplier) {
myUsagesWordSupplier = usagesWordSupplier;
}
public String getTabName() {
@@ -274,7 +292,8 @@ public class UsageViewPresentation {
&& Objects.equals(myUsagesInGeneratedCodeString, that.myUsagesInGeneratedCodeString)
&& Objects.equals(myUsagesString, that.myUsagesString)
&& Objects.equals(mySearchString, that.mySearchString)
&& Objects.equals(myUsagesWord, that.myUsagesWord)
&& Objects.equals(myUsagesWordSupplier.apply(1), that.myUsagesWordSupplier.apply(1))
&& Objects.equals(myUsagesWordSupplier.apply(2), that.myUsagesWordSupplier.apply(2))
&& arePatternsEqual(mySearchPattern, that.mySearchPattern)
&& arePatternsEqual(myReplacePattern, that.myReplacePattern);
}
@@ -308,7 +327,8 @@ public class UsageViewPresentation {
myCodeUsages,
myUsageTypeFilteringAvailable,
myExcludeAvailable,
myUsagesWord,
myUsagesWordSupplier.apply(1),
myUsagesWordSupplier.apply(2),
myTabName,
myToolwindowTitle,
myDetachedMode,
@@ -336,7 +356,7 @@ public class UsageViewPresentation {
copyInstance.myOpenInNewTab = myOpenInNewTab;
copyInstance.myCodeUsages = myCodeUsages;
copyInstance.myUsageTypeFilteringAvailable = myUsageTypeFilteringAvailable;
copyInstance.myUsagesWord = myUsagesWord;
copyInstance.myUsagesWordSupplier = myUsagesWordSupplier;
copyInstance.myTabName = myTabName;
copyInstance.myToolwindowTitle = myToolwindowTitle;
copyInstance.myDetachedMode = myDetachedMode;