feat: add config and prevent multiple software opening

master 0.01
ZGGSONG 2 years ago
parent 7c50f1d5d4
commit ca601399d0

@ -4,8 +4,9 @@ WPF 开发的一款即用即走的翻译工具
## 功能 ## 功能
- [x] 添加 DeepL API - [x] 添加 DeepL API
- [x] 添加百度翻译 API [申请教程Bob](https://bobtranslate.com/service/translate/baidu.html) - [x] 添加百度翻译 API
- [x] 实现基本翻译功能 - [x] 实现基本翻译功能
- [x] 多开
- [ ] 自动生成配置文件 - [ ] 自动生成配置文件
- [ ] 优化 DeepL 服务并打包成库引入进项目 - [ ] 优化 DeepL 服务并打包成库引入进项目
- [ ] 添加缓存功能 - [ ] 添加缓存功能
@ -19,17 +20,8 @@ WPF 开发的一款即用即走的翻译工具
## 使用 ## 使用
首先在软件运行目录的 `STranslate.yml` 中添加自己的配置,这里推荐百度通用翻译 API 免费版 [申请教程参照Bob WIKI](https://bobtranslate.com/service/translate/baidu.html)
打开软件后会静默在后台,等待调用,全局监听快捷键(日后升级成自定义)`Alt` + `A` 即可打开软件主界面,输入需要翻译的内容,选择目标语言,如果识别语种不正确则手动指定即可,翻译结束后选择复制或点击一键复制即可 打开软件后会静默在后台,等待调用,全局监听快捷键(日后升级成自定义)`Alt` + `A` 即可打开软件主界面,输入需要翻译的内容,选择目标语言,如果识别语种不正确则手动指定即可,翻译结束后选择复制或点击一键复制即可
点击软件外部界面任意处或点击ESC软件则会自动隐藏到后台即用即走。 点击软件外部界面任意处或点击ESC软件则会自动隐藏到后台即用即走。
> 当前不能生成配置文件,需要手动再 D 盘根目录创建一个名为 `STranslate.yml` 的配置文件,内容格式如下
```yml
service: baidu
baidu:
appid:
secretKey:
deepl:
url:
```

@ -13,5 +13,22 @@ namespace STranslate
/// </summary> /// </summary>
public partial class App : Application public partial class App : Application
{ {
private static System.Threading.Mutex mutex;
//系统能够识别有名称的互斥,因此可以使用它禁止应用程序启动两次
//第二个参数可以设置为产品的名称:Application.ProductName
// 每次启动应用程序都会验证名称为OnlyRun的互斥是否存在
protected override void OnStartup(StartupEventArgs e)
{
mutex = new System.Threading.Mutex(true, "STranslate");
if (mutex.WaitOne(0, false))
{
base.OnStartup(e);
}
else
{
MessageBox.Show("STranslate 已在运行...", "提示");
this.Shutdown();
}
}
} }
} }

@ -16,6 +16,13 @@
<None Remove="Images\translate_x128.png" /> <None Remove="Images\translate_x128.png" />
<None Remove="Images\translate_x256.png" /> <None Remove="Images\translate_x256.png" />
<None Remove="Images\translate_x64.png" /> <None Remove="Images\translate_x64.png" />
<None Remove="Model\STranslate.yml" />
</ItemGroup>
<ItemGroup>
<Content Include="STranslate.yml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

@ -0,0 +1,6 @@
service: baidu
baidu:
appid:
secretKey:
deepl:
url:

@ -12,7 +12,7 @@ namespace STranslate.ViewModel
{ {
public class MainVM : BaseVM public class MainVM : BaseVM
{ {
private static readonly string ConfigPath = @"D:\STranslate.yml"; private static string ConfigPath => $"{AppDomain.CurrentDomain.BaseDirectory}STranslate.yml";
public static ConfigModel config = new ConfigModel(); public static ConfigModel config = new ConfigModel();
private static Dictionary<string, LanguageEnum> LanguageEnumDict { get => TranslateUtil.GetEnumList<LanguageEnum>(); } private static Dictionary<string, LanguageEnum> LanguageEnumDict { get => TranslateUtil.GetEnumList<LanguageEnum>(); }
@ -25,6 +25,7 @@ namespace STranslate.ViewModel
OutputCombo = LanguageEnumDict.Keys.ToList(); OutputCombo = LanguageEnumDict.Keys.ToList();
OutputComboSelected = LanguageEnum.EN.GetDescription(); OutputComboSelected = LanguageEnum.EN.GetDescription();
//TODO: fix no config
config = ConfigUtil.ReadConfig(ConfigPath); config = ConfigUtil.ReadConfig(ConfigPath);
//手动复制翻译结果 //手动复制翻译结果