平方X 发表于 2018-1-3 20:48:48

[2488]OmegaT 百度翻译插件开发记录


# 0x00 前言
之前使用 HtmlUnit 实现,但比较笨,后来还失效了。[让OmegaT支持百度翻译和谷歌翻译](http://blog.pingfangx.com/2359.html)
于是这一次重写插件,
[OmegaT 谷歌翻译插件开发记录](http://blog.pingfangx.com/2487.html)
[OmegaT 百度翻译插件开发记录](http://blog.pingfangx.com/2488.html)

# 0x01 appId 和 securityKey
>若当月翻译字符数≤2百万,当月免费;若超过2百万字符,按照49元/百万字符支付当月全部翻译字符数费用

可以免费使用,配置 appId 和 securityKey 即可。

# 0x02 保存
以前是在 OmegaT.l4J.ini 中设置,发现改了。查看其他机器翻译,
## 获取
```
      String appId = getCredential(PROPERTY_BAIDU_APP_ID);
      if (appId == null || appId.isEmpty()) {
            return "need config " + PROPERTY_BAIDU_APP_ID;
      }
      String securityKey = getCredential(PROPERTY_BAIDU_SECURITY_KEY);
      if (securityKey == null || securityKey.isEmpty()) {
            return "need config " + PROPERTY_BAIDU_SECURITY_KEY;
      }
```
## 写入
```
    @Override
    public boolean isConfigurable() {
      return true;
    }

    @Override
    public void showConfigurationUI(Window parent) {
      MTConfigDialog dialog = new MTConfigDialog(parent, getName()) {
            @Override
            protected void onConfirm() {
                boolean temporary = panel.temporaryCheckBox.isSelected();
                String appId = panel.valueField1.getText().trim();
                setCredential(PROPERTY_BAIDU_APP_ID, appId, temporary);
                String securityKey = panel.valueField2.getText().trim();
                setCredential(PROPERTY_BAIDU_SECURITY_KEY, securityKey, temporary);
            }
      };
      dialog.panel.valueLabel1.setText(PROPERTY_BAIDU_APP_ID);
      dialog.panel.valueField1.setText(getCredential(PROPERTY_BAIDU_APP_ID));
      dialog.panel.valueLabel2.setText(PROPERTY_BAIDU_SECURITY_KEY);
      dialog.panel.valueField2.setText(getCredential(PROPERTY_BAIDU_SECURITY_KEY));
      dialog.panel.temporaryCheckBox.setSelected(isCredentialStoredTemporarily(PROPERTY_BAIDU_APP_ID));
      dialog.show();
    }
```
页: [1]
查看完整版本: [2488]OmegaT 百度翻译插件开发记录