diff --git a/config/checkstyle/suppressions.xml b/config/checkstyle/suppressions.xml
index 0d41dd0143..3ccb714770 100644
--- a/config/checkstyle/suppressions.xml
+++ b/config/checkstyle/suppressions.xml
@@ -139,8 +139,8 @@
lines="90,91,92,96,100,104,105,107,264,275,276,284,286,293,294,308,309,359,361,449,495,605,674,710"/>
-
-
+
+
diff --git a/src/org/omegat/Bundle.properties b/src/org/omegat/Bundle.properties
index 19327348bb..f6d12d3c0a 100644
--- a/src/org/omegat/Bundle.properties
+++ b/src/org/omegat/Bundle.properties
@@ -2947,3 +2947,8 @@ DICTIONARY_LOAD_FILE=Loaded dictionary from '{0}': {1} ms
DICTIONARY_LOAD_ERROR=Error load dictionary from '{0}': {1}
DICTIONARY_MANAGER_ERROR_SAVE_IGNORE=Error saving ignore words"
EDITOR_CONTROLLER_EXCEPTION=bad location exception when changing case
+
+MATCHES_VAR_EXPANSION_MATCH_COMES_FROM_TM=External TM
+MATCHES_VAR_EXPANSION_MATCH_COMES_FROM_FILES=Source Files
+MATCHES_VAR_EXPANSION_MATCH_COMES_FROM_MEMORY=Project
+MATCHES_VAR_EXPANSION_MATCH_COMES_FROM_SUBSEGMENTS=Sub-segmented match
diff --git a/src/org/omegat/core/matching/NearString.java b/src/org/omegat/core/matching/NearString.java
index 827da2f4e5..bdaef735fa 100644
--- a/src/org/omegat/core/matching/NearString.java
+++ b/src/org/omegat/core/matching/NearString.java
@@ -49,37 +49,81 @@
*/
public class NearString {
public enum MATCH_SOURCE {
- MEMORY, TM, FILES
- };
+ /** From project memory */
+ MEMORY,
+ /** From external TM in project tm/ folder */
+ TM,
+ /** From source files */
+ FILES,
+ /** From sub-segmented match */
+ SUBSEGMENTS
+ }
public enum SORT_KEY {
- SCORE, SCORE_NO_STEM, ADJUSTED_SCORE
+ /** normal score */
+ SCORE,
+ /** score without stemming */
+ SCORE_NO_STEM,
+ /** adjusted score */
+ ADJUSTED_SCORE
}
- public NearString(EntryKey key, ITMXEntry entry, MATCH_SOURCE comesFrom, boolean fuzzyMark,
- Scores scores, byte[] nearData, String projName) {
- this(key, entry.getSourceText(), entry.getTranslationText(), comesFrom, fuzzyMark, scores,
- nearData, projName, entry.getCreator(), entry.getCreationDate(), entry.getChanger(),
+ /**
+ * Constructor.
+ *
+ * @param key
+ * entry key
+ * @param entry
+ * the TMX entry that has source text, translation text, creator,
+ * creation date, changer, change date and properties.
+ * @param comesFrom
+ * origin
+ * @param fuzzyMark
+ * fuzzy or not
+ * @param scores
+ * score values
+ * @param nearData
+ * similarity data.
+ * @param projName
+ * project name.
+ */
+ public NearString(EntryKey key, ITMXEntry entry, MATCH_SOURCE comesFrom, boolean fuzzyMark, Scores scores,
+ byte[] nearData, String projName) {
+ this(key, entry.getSourceText(), entry.getTranslationText(), comesFrom, fuzzyMark, scores, nearData,
+ projName, entry.getCreator(), entry.getCreationDate(), entry.getChanger(),
entry.getChangeDate(), entry.getProperties());
}
/**
* Constructor, backward compatible.
- * @param key entry key
- * @param source source text
- * @param translation translation text
- * @param comesFrom origin
- * @param fuzzyMark fuzzy or not
+ *
+ * @param key
+ * entry key
+ * @param source
+ * source text
+ * @param translation
+ * translation text
+ * @param comesFrom
+ * origin
+ * @param fuzzyMark
+ * fuzzy or not
* @param nearScore
* @param nearScoreNoStem
* @param adjustedScore
- * @param nearData similarity data.
- * @param projName project name.
- * @param creator creator name
- * @param creationDate creation date
- * @param changer changer name
- * @param changedDate changer date
- * @param props properties of entry.
+ * @param nearData
+ * similarity data.
+ * @param projName
+ * project name.
+ * @param creator
+ * creator name
+ * @param creationDate
+ * creation date
+ * @param changer
+ * changer name
+ * @param changedDate
+ * changer date
+ * @param props
+ * properties of entry.
*/
@Deprecated
public NearString(EntryKey key, String source, String translation, MATCH_SOURCE comesFrom,
@@ -110,14 +154,23 @@ private NearString(EntryKey key, String source, String translation, MATCH_SOURCE
/**
* Merge NearString object.
- * @param ns NearString to merge.
- * @param key entry key.
- * @param entry TMXEntry entry
- * @param comesFrom origin
- * @param fuzzyMark fuzzy or not
- * @param scores similarity score
- * @param nearData similarity data
- * @param projName project name
+ *
+ * @param ns
+ * NearString to merge.
+ * @param key
+ * entry key.
+ * @param entry
+ * TMXEntry entry
+ * @param comesFrom
+ * origin
+ * @param fuzzyMark
+ * fuzzy or not
+ * @param scores
+ * similarity score
+ * @param nearData
+ * similarity data
+ * @param projName
+ * project name
* @return NearString merged.
*/
public static NearString merge(NearString ns, EntryKey key, ITMXEntry entry, MATCH_SOURCE comesFrom,
diff --git a/src/org/omegat/core/statistics/FindMatches.java b/src/org/omegat/core/statistics/FindMatches.java
index 614cb2c8f4..9074d5c3ef 100644
--- a/src/org/omegat/core/statistics/FindMatches.java
+++ b/src/org/omegat/core/statistics/FindMatches.java
@@ -265,8 +265,8 @@ public List search(String searchText, boolean requiresTranslation, b
for (ITMXEntry tmen : en.getValue().getEntries()) {
checkStopped(stop);
if (tmen.getSourceText() == null) {
- // Not all TMX entries have a source; in that case there can
- // be no meaningful match, so skip.
+ // Not all TMX entries have a source; skip it in
+ // the case, because of no meaningful.
continue;
}
if (requiresTranslation && tmen.getTranslationText() == null) {
@@ -279,6 +279,7 @@ public List search(String searchText, boolean requiresTranslation, b
processEntry(null, tmen, en.getKey(), NearString.MATCH_SOURCE.TM, false, tmenPenalty);
}
}
+
// travel by all entries for check source file translations
for (SourceTextEntry ste : project.getAllEntries()) {
checkStopped(stop);
diff --git a/src/org/omegat/gui/matches/MatchesVarExpansion.java b/src/org/omegat/gui/matches/MatchesVarExpansion.java
index 850daf5272..ca473351b1 100644
--- a/src/org/omegat/gui/matches/MatchesVarExpansion.java
+++ b/src/org/omegat/gui/matches/MatchesVarExpansion.java
@@ -90,11 +90,13 @@ public class MatchesVarExpansion extends VarExpansion {
public static final String VAR_DIFF_REVERSED = "${diffReversed}";
public static final String VAR_SOURCE_LANGUAGE = "${sourceLanguage}";
public static final String VAR_TARGET_LANGUAGE = "${targetLanguage}";
+ public static final String VAR_MATCH_SOURCE = "${matchSource}";
private static final String[] MATCHES_VARIABLES = { VAR_ID, VAR_SOURCE_TEXT, VAR_DIFF, VAR_DIFF_REVERSED,
VAR_TARGET_TEXT, VAR_SCORE_BASE, VAR_SCORE_NOSTEM, VAR_SCORE_ADJUSTED, VAR_FILE_NAME_ONLY,
VAR_FILE_PATH, VAR_FILE_SHORT_PATH, VAR_INITIAL_CREATION_ID, VAR_INITIAL_CREATION_DATE,
- VAR_CHANGED_ID, VAR_CHANGED_DATE, VAR_FUZZY_FLAG, VAR_SOURCE_LANGUAGE, VAR_TARGET_LANGUAGE };
+ VAR_CHANGED_ID, VAR_CHANGED_DATE, VAR_FUZZY_FLAG, VAR_SOURCE_LANGUAGE, VAR_TARGET_LANGUAGE,
+ VAR_MATCH_SOURCE };
public static List getMatchesVariables() {
return Collections.unmodifiableList(Arrays.asList(MATCHES_VARIABLES));
@@ -102,7 +104,7 @@ public static List getMatchesVariables() {
public static final String DEFAULT_TEMPLATE = VAR_ID + ". " + VAR_FUZZY_FLAG + VAR_SOURCE_TEXT + "\n"
+ VAR_TARGET_TEXT + "\n" + "<" + VAR_SCORE_BASE + "/" + VAR_SCORE_NOSTEM + "/"
- + VAR_SCORE_ADJUSTED + "% " + VAR_FILE_PATH + ">";
+ + VAR_SCORE_ADJUSTED + "%" + VAR_MATCH_SOURCE + VAR_FILE_PATH + ">";
public static final Pattern PATTERN_SINGLE_PROPERTY = Pattern.compile("@\\{(.+?)\\}");
public static final Pattern PATTERN_PROPERTY_GROUP = Pattern
@@ -222,6 +224,22 @@ private String getPropValue(List props, String type) {
return null;
}
+ private String expandMatchSource(String localTemplate, NearString.MATCH_SOURCE comesFrom) {
+ switch (comesFrom) {
+ case TM:
+ return localTemplate.replace(VAR_MATCH_SOURCE, OStrings.getString("MATCHES_VAR_EXPANSION_MATCH_COMES_FROM_TM") + " ");
+ case FILES:
+ return localTemplate.replace(VAR_MATCH_SOURCE, OStrings.getString("MATCHES_VAR_EXPANSION_MATCH_COMES_FROM_FILES"));
+ case MEMORY:
+ return localTemplate.replace(VAR_MATCH_SOURCE, OStrings.getString("MATCHES_VAR_EXPANSION_MATCH_COMES_FROM_MEMORY"));
+ case SUBSEGMENTS:
+ return localTemplate.replace(VAR_MATCH_SOURCE, OStrings.getString(
+ "MATCHES_VAR_EXPANSION_MATCH_COMES_FROM_SUBSEGMENTS") + " ");
+ default:
+ return localTemplate.replace(VAR_MATCH_SOURCE, "");
+ }
+ }
+
@Override
public String expandVariables(NearString match) {
// do not modify template directly, so that we can reuse for another
@@ -285,6 +303,9 @@ public String expandVariables(NearString match) {
} else {
localTemplate = localTemplate.replace(VAR_TARGET_TEXT, match.translation);
}
+
+ localTemplate = expandMatchSource(localTemplate, match.comesFrom);
+
return localTemplate;
}
diff --git a/test-acceptance/src/org/omegat/gui/matches/MatchesTextAreaTest.java b/test-acceptance/src/org/omegat/gui/matches/MatchesTextAreaTest.java
index 252a7db7d9..76754584d0 100644
--- a/test-acceptance/src/org/omegat/gui/matches/MatchesTextAreaTest.java
+++ b/test-acceptance/src/org/omegat/gui/matches/MatchesTextAreaTest.java
@@ -53,7 +53,8 @@ public void testFuzzyMatches() throws Exception {
window.textBox("matches_pane").requireNotEditable();
Pattern pattern = Pattern.compile("1. Error while reading MT results\\n"
+ "Erreur lors de la lecture des résultats de TA\\n"
- + "<\\d+/\\d+/\\d+%\\s*>");
+ + "<\\d+/\\d+/\\d+%\\s*" + OStrings.getString(
+ "MATCHES_VAR_EXPANSION_MATCH_COMES_FROM_MEMORY") + "\\s*>");
window.textBox("matches_pane").requireText(pattern);
closeProject();
}
diff --git a/test/src/org/omegat/gui/matches/MatchesVarExpansionTest.java b/test/src/org/omegat/gui/matches/MatchesVarExpansionTest.java
index 8a552c120e..48ead68b18 100644
--- a/test/src/org/omegat/gui/matches/MatchesVarExpansionTest.java
+++ b/test/src/org/omegat/gui/matches/MatchesVarExpansionTest.java
@@ -45,6 +45,7 @@
import org.omegat.core.data.ProjectProperties;
import org.omegat.core.data.SourceTextEntry;
import org.omegat.core.matching.NearString;
+import org.omegat.core.matching.NearString.MATCH_SOURCE;
import org.omegat.gui.editor.IEditor;
import org.omegat.gui.editor.IEditorFilter;
import org.omegat.gui.editor.IEditorSettings;
@@ -208,7 +209,7 @@ public NearString getMockNearString() {
entry.changeDate = 20020523;
entry.otherProperties = testProps;
NearString.Scores scores = new NearString.Scores(20, 40, 60);
- return new NearString(null, entry, null, false, scores, null, "mock testing project");
+ return new NearString(null, entry, MATCH_SOURCE.TM, false, scores, null, "mock testing project");
};
private void setupProject(Language sourceLanguage, Language targetLanguage) {