Hi,
I don't know who posted this, but they found an oversight in the community and managed to post this as a wiki! I can't see who did it, so I've removed the wiki and put it here. Whoever posted it, please note it's here ;-)
====================
I had some issues with my plugin code on trados2019. When I added the translation plugin in the project Settings, clicking OK failed to trigger the CurrentProjectChanged event,
my code:
public ITranslationProvider[] Browse(IWin32Window owner, LanguagePair[] languagePairs,
ITranslationProviderCredentialStore credentialStore)
{
string version = TradosUtils.GetStudioVersionFriendly(); // 获取当前trados版本,例如17.1.6
IOLTranslationOptions Options = new IOLTranslationOptions(MtTranslationProviderFactory.transnProviderUri);
var provider = new MtTranslationProvider(Options);
if (m_setForm != null)
{
// 二次挂载,清空数据
m_setForm.Dispose();
m_setForm = null;
}
Logger.Debug("加载翻译插件,ITranslationProvider[] Browse");
var projectController = SdlTradosStudio.Application.GetController<ProjectsController>();
projectController.CurrentProjectChanged += (s, e) =>
{
if (m_setForm == null)
{
return;
}
if (m_setForm != null && m_setForm.DialogResult != DialogResult.OK)
{
return;
}
// 创建项目完成,点击关闭时,触发该事件
// 在左下角,从编辑器转到项目视图时,也触发该事件
if (projectController.CurrentProject == null)
return;
string filePath = projectController.CurrentProject.FilePath;
Logger.Info($"current project path = {filePath}");
string fullPath = Path.GetFullPath(filePath);
// 解析文件所在的目录
string directory = Path.GetDirectoryName(filePath);
string fileName = Path.GetFileName(filePath);
// 保存术语库语料库信息
directory += "/transn_plugin/transn.ini";
SaveConfig(directory, fileName);
m_setForm.Dispose();
m_setForm = null;
CommonParas.Instance.ClearData(); // 保存后,清空全局的数据,项目切换后,这些全局数据就无效了
};
projectController.CurrentProjectChanging2 += (s, e) =>
{
int a = 1;
};
// 创建项目时关闭,恢复相关static值
CommonParas.Instance.ClearData();
ActionHelper.IsClickedGetMT = true;
CommonParas.Instance.tgc = "";
var loadOptions = new IOLTranslationOptions();
var firstDialog = new TransnLoginForm(loadOptions);
// 根据原文译文,确定语种方向,例如中文zh,德文de, 匹配后台接口中的iso6391字段
foreach (var languagePair in languagePairs)
{
var originLanguage = languagePair.SourceCultureName.Substring(0, 2).ToLower();
var targetLanguage = languagePair.TargetCultureName.Substring(0, 2).ToLower();
CommonParas.Instance.originLanguage_iso6391 = originLanguage;
CommonParas.Instance.targetLanguage_iso6391 = targetLanguage; // 目标语言可能有多个, 翻译时取第0个
break;
}
// 检查token
string token = CConfigFileOperator.GetIniPrivateValue("PluginConfig", "token");
SetSupportedLanguages(languagePairs, loadOptions);
string response = string.Empty;
int tokenResult = ApiConnecter.IsEffectiveToken(token, ref response);
// 解析json
if (tokenResult == 0)
{
CTokenCheckResp result = JsonConvert.DeserializeObject<CTokenCheckResp>(response);
CommonParas.Instance.NickName = result.nickname;
}
else
{
if(tokenResult == -1)
{
MessageBox.Show("服务请求超时,请检查电脑是否连接网络");
return null;
}
else
{
if (firstDialog.ShowDialog(owner) != DialogResult.OK)
{
return null;
}
}
}
m_setForm = new SetForm();
if(m_setForm.ShowDialog() != DialogResult.OK)
{
return null;
}
//projectController.RefreshProjects();
return new ITranslationProvider[] { provider };
}
In trados2022, when the plug-in is mounted, clicking OK (in red) will trigger CurrentProjectChanged event, but in trados2019, CurrentProjectChanged event will not be triggered. Due to the requirements of our project, I need to save some configurations by clicking OK (red box in the picture above), but it cannot be triggered, resulting in my configuration failing to be saved. Is there a solution.
Generated Image Alt-Text
[edited by: Trados AI at 1:42 PM (GMT 0) on 5 Mar 2024]
Paul Filkin | RWS Group
________________________
Design your own training!
You've done the courses and still need to go a little further, or still not clear?
Tell us what you need in our Community Solutions Hub