OmegaT 6.0 and later has BasedCachedTranslate class that defines getTranslation as
@Override
public final String getTranslation(Language sLang, Language tLang, String text) throws Exception {
if (enabled) {
String trText = getTruncateText(text);
return putCache(sLang, tLang, trText, translate(sLang, tLang, trText));
} else {
return null;
}
}
This does not check cached translation before run translate.
MachineTraslateTextArea#getTranslation call it when "force" translate by "Ctrl-M" entered, or configured "Auto fetch" is on, and "only translated" is on and untranslated segment or "only translated" is off.
if (!force) {
if (!Preferences.isPreferenceDefault(Preferences.MT_AUTO_FETCH, true)) {
return translator.getCachedTranslation(source, target, src);
}
if (Preferences.isPreference(Preferences.MT_ONLY_UNTRANSLATED)) {
TMXEntry entry = Core.getProject().getTranslationInfo(currentlyProcessedEntry);
if (entry.isTranslated()) {
return translator.getCachedTranslation(source, target, src);
}
}
}
try {
return translator.getTranslation(source, target, src);
I think we visit translated segment, we should check cache first then ask to engine.
Diff:
Diff:
Pull-Request is at https://github.com/omegat-org/omegat/pull/884