mirror of
https://github.com/chylex/TweetDuck.git
synced 2025-04-13 18:15:48 +02:00
Add an option to set target language for tweet translations
This commit is contained in:
parent
3a27089364
commit
62310ce4a4
Configuration
Core
Bridge
Other
Utils
Resources/Scripts
@ -52,6 +52,7 @@ static UserConfig(){
|
||||
|
||||
public bool EnableSpellCheck { get; set; } = false;
|
||||
public string AppLocale { get; set; } = "en-US";
|
||||
public string TranslationTarget { get; set; } = "en";
|
||||
|
||||
private TrayIcon.Behavior _trayBehavior = TrayIcon.Behavior.Disabled;
|
||||
public bool EnableTrayHighlight { get; set; } = true;
|
||||
|
@ -7,9 +7,8 @@ public enum Environment{
|
||||
}
|
||||
|
||||
public static string GenerateScript(Environment environment){
|
||||
string Bool(bool value){
|
||||
return value ? "true;" : "false;";
|
||||
}
|
||||
string Bool(bool value) => value ? "true;" : "false;";
|
||||
string Str(string value) => '"'+value+"\";";
|
||||
|
||||
StringBuilder build = new StringBuilder().Append("(function(x){");
|
||||
|
||||
@ -21,6 +20,7 @@ string Bool(bool value){
|
||||
build.Append("x.muteNotifications=").Append(Bool(Program.UserConfig.MuteNotifications));
|
||||
build.Append("x.hasCustomNotificationSound=").Append(Bool(Program.UserConfig.NotificationSoundPath.Length > 0));
|
||||
build.Append("x.notificationMediaPreviews=").Append(Bool(Program.UserConfig.NotificationMediaPreviews));
|
||||
build.Append("x.translationTarget=").Append(Str(Program.UserConfig.TranslationTarget));
|
||||
}
|
||||
|
||||
if (environment == Environment.Notification){
|
||||
|
@ -37,7 +37,7 @@ public FormSettings(FormBrowser browser, PluginManager plugins, UpdateHandler up
|
||||
this.buttonHeight = BrowserUtils.Scale(39, this.GetDPIScale()) | 1;
|
||||
|
||||
AddButton("General", () => new TabSettingsGeneral(this.browser, updates));
|
||||
AddButton("Locales", () => new TabSettingsLocales(this.browser));
|
||||
AddButton("Locales", () => new TabSettingsLocales());
|
||||
AddButton("System Tray", () => new TabSettingsTray());
|
||||
AddButton("Notifications", () => new TabSettingsNotifications(new FormNotificationExample(this.browser, this.plugins)));
|
||||
AddButton("Sounds", () => new TabSettingsSounds());
|
||||
|
66
Core/Other/Settings/TabSettingsLocales.Designer.cs
generated
66
Core/Other/Settings/TabSettingsLocales.Designer.cs
generated
@ -28,8 +28,11 @@ private void InitializeComponent() {
|
||||
this.checkSpellCheck = new System.Windows.Forms.CheckBox();
|
||||
this.labelLocales = new System.Windows.Forms.Label();
|
||||
this.flowPanel = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.comboBoxAppLocale = new System.Windows.Forms.ComboBox();
|
||||
this.labelAppLanguage = new System.Windows.Forms.Label();
|
||||
this.comboBoxAppLocale = new System.Windows.Forms.ComboBox();
|
||||
this.labelTranslations = new System.Windows.Forms.Label();
|
||||
this.labelTranslationTarget = new System.Windows.Forms.Label();
|
||||
this.comboBoxTranslationTarget = new System.Windows.Forms.ComboBox();
|
||||
this.flowPanel.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
@ -64,23 +67,16 @@ private void InitializeComponent() {
|
||||
this.flowPanel.Controls.Add(this.checkSpellCheck);
|
||||
this.flowPanel.Controls.Add(this.labelAppLanguage);
|
||||
this.flowPanel.Controls.Add(this.comboBoxAppLocale);
|
||||
this.flowPanel.Controls.Add(this.labelTranslations);
|
||||
this.flowPanel.Controls.Add(this.labelTranslationTarget);
|
||||
this.flowPanel.Controls.Add(this.comboBoxTranslationTarget);
|
||||
this.flowPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
||||
this.flowPanel.Location = new System.Drawing.Point(9, 9);
|
||||
this.flowPanel.Name = "flowPanel";
|
||||
this.flowPanel.Size = new System.Drawing.Size(322, 320);
|
||||
this.flowPanel.Size = new System.Drawing.Size(322, 193);
|
||||
this.flowPanel.TabIndex = 4;
|
||||
this.flowPanel.WrapContents = false;
|
||||
//
|
||||
// comboBoxAppLocale
|
||||
//
|
||||
this.comboBoxAppLocale.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxAppLocale.FormattingEnabled = true;
|
||||
this.comboBoxAppLocale.Location = new System.Drawing.Point(5, 74);
|
||||
this.comboBoxAppLocale.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
||||
this.comboBoxAppLocale.Name = "comboBoxAppLocale";
|
||||
this.comboBoxAppLocale.Size = new System.Drawing.Size(311, 21);
|
||||
this.comboBoxAppLocale.TabIndex = 9;
|
||||
//
|
||||
// labelAppLanguage
|
||||
//
|
||||
this.labelAppLanguage.AutoSize = true;
|
||||
@ -91,13 +87,54 @@ private void InitializeComponent() {
|
||||
this.labelAppLanguage.TabIndex = 11;
|
||||
this.labelAppLanguage.Text = "App Language";
|
||||
//
|
||||
// comboBoxAppLocale
|
||||
//
|
||||
this.comboBoxAppLocale.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxAppLocale.FormattingEnabled = true;
|
||||
this.comboBoxAppLocale.Location = new System.Drawing.Point(5, 74);
|
||||
this.comboBoxAppLocale.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
||||
this.comboBoxAppLocale.Name = "comboBoxAppLocale";
|
||||
this.comboBoxAppLocale.Size = new System.Drawing.Size(311, 21);
|
||||
this.comboBoxAppLocale.TabIndex = 9;
|
||||
//
|
||||
// labelTranslations
|
||||
//
|
||||
this.labelTranslations.AutoSize = true;
|
||||
this.labelTranslations.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.labelTranslations.Location = new System.Drawing.Point(0, 118);
|
||||
this.labelTranslations.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0);
|
||||
this.labelTranslations.Name = "labelTranslations";
|
||||
this.labelTranslations.Size = new System.Drawing.Size(116, 20);
|
||||
this.labelTranslations.TabIndex = 10;
|
||||
this.labelTranslations.Text = "Bing Translator";
|
||||
//
|
||||
// labelTranslationTarget
|
||||
//
|
||||
this.labelTranslationTarget.AutoSize = true;
|
||||
this.labelTranslationTarget.Location = new System.Drawing.Point(3, 150);
|
||||
this.labelTranslationTarget.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
||||
this.labelTranslationTarget.Name = "labelTranslationTarget";
|
||||
this.labelTranslationTarget.Size = new System.Drawing.Size(89, 13);
|
||||
this.labelTranslationTarget.TabIndex = 8;
|
||||
this.labelTranslationTarget.Text = "Target Language";
|
||||
//
|
||||
// comboBoxTranslationTarget
|
||||
//
|
||||
this.comboBoxTranslationTarget.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxTranslationTarget.FormattingEnabled = true;
|
||||
this.comboBoxTranslationTarget.Location = new System.Drawing.Point(5, 166);
|
||||
this.comboBoxTranslationTarget.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
||||
this.comboBoxTranslationTarget.Name = "comboBoxTranslationTarget";
|
||||
this.comboBoxTranslationTarget.Size = new System.Drawing.Size(311, 21);
|
||||
this.comboBoxTranslationTarget.TabIndex = 7;
|
||||
//
|
||||
// TabSettingsLocales
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.flowPanel);
|
||||
this.Name = "TabSettingsLocales";
|
||||
this.Size = new System.Drawing.Size(340, 338);
|
||||
this.Size = new System.Drawing.Size(340, 211);
|
||||
this.flowPanel.ResumeLayout(false);
|
||||
this.flowPanel.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
@ -109,7 +146,10 @@ private void InitializeComponent() {
|
||||
private System.Windows.Forms.CheckBox checkSpellCheck;
|
||||
private System.Windows.Forms.Label labelLocales;
|
||||
private System.Windows.Forms.FlowLayoutPanel flowPanel;
|
||||
private System.Windows.Forms.ComboBox comboBoxTranslationTarget;
|
||||
private System.Windows.Forms.Label labelTranslationTarget;
|
||||
private System.Windows.Forms.ComboBox comboBoxAppLocale;
|
||||
private System.Windows.Forms.Label labelTranslations;
|
||||
private System.Windows.Forms.Label labelAppLanguage;
|
||||
}
|
||||
}
|
||||
|
@ -4,15 +4,12 @@
|
||||
|
||||
namespace TweetDuck.Core.Other.Settings{
|
||||
sealed partial class TabSettingsLocales : BaseTabSettings{
|
||||
private readonly FormBrowser browser;
|
||||
|
||||
public TabSettingsLocales(FormBrowser browser){
|
||||
public TabSettingsLocales(){
|
||||
InitializeComponent();
|
||||
|
||||
this.browser = browser;
|
||||
|
||||
toolTip.SetToolTip(checkSpellCheck, "Underlines words that are spelled incorrectly.");
|
||||
toolTip.SetToolTip(comboBoxAppLocale, "Language used for spell check and context menu items.");
|
||||
toolTip.SetToolTip(comboBoxTranslationTarget, "Language tweets are translated into.");
|
||||
|
||||
checkSpellCheck.Checked = Config.EnableSpellCheck;
|
||||
|
||||
@ -26,11 +23,17 @@ public TabSettingsLocales(FormBrowser browser){
|
||||
|
||||
comboBoxAppLocale.SelectedItem = new LocaleUtils.Item(Config.AppLocale);
|
||||
|
||||
foreach(LocaleUtils.Item item in LocaleUtils.TweetDeckTranslationLocales){
|
||||
comboBoxTranslationTarget.Items.Add(item);
|
||||
}
|
||||
|
||||
comboBoxTranslationTarget.SelectedItem = new LocaleUtils.Item(Config.TranslationTarget);
|
||||
}
|
||||
|
||||
public override void OnReady(){
|
||||
checkSpellCheck.CheckedChanged += checkSpellCheck_CheckedChanged;
|
||||
comboBoxAppLocale.SelectedValueChanged += comboBoxAppLocale_SelectedValueChanged;
|
||||
comboBoxTranslationTarget.SelectedValueChanged += comboBoxTranslationTarget_SelectedValueChanged;
|
||||
}
|
||||
|
||||
private void checkSpellCheck_CheckedChanged(object sender, EventArgs e){
|
||||
@ -42,5 +45,9 @@ private void comboBoxAppLocale_SelectedValueChanged(object sender, EventArgs e){
|
||||
Config.AppLocale = (comboBoxAppLocale.SelectedItem as LocaleUtils.Item)?.Code;
|
||||
PromptRestart();
|
||||
}
|
||||
|
||||
private void comboBoxTranslationTarget_SelectedValueChanged(object sender, EventArgs e){
|
||||
Config.TranslationTarget = (comboBoxTranslationTarget.SelectedItem as LocaleUtils.Item)?.Code;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -13,6 +13,15 @@ static class LocaleUtils{
|
||||
.Select(file => new Item(Path.GetFileNameWithoutExtension(file)))
|
||||
.OrderBy(code => code);
|
||||
|
||||
// TD.languages.getSupportedTranslationDestinationLanguages() except for "ht", "in", "iw" which are missing/duplicates
|
||||
public static IEnumerable<Item> TweetDeckTranslationLocales { get; } = new List<string>{
|
||||
"bg", "ca", "zh-cn", "zh-tw", "cs", "da", "nl",
|
||||
"en", "et", "fi", "fr", "de", "el", "he", "hi",
|
||||
"hu", "id", "it", "ja", "ko", "lv", "lt", "no",
|
||||
"pl", "pt", "ro", "ru", "sk", "sl", "es", "sv",
|
||||
"th", "tr", "uk", "vi", "ar", "fa"
|
||||
}.Select(code => new Item(code)).OrderBy(code => code).ToList();
|
||||
|
||||
public sealed class Item : IComparable<Item>{
|
||||
public string Code { get; }
|
||||
public CultureInfo Info { get; }
|
||||
|
@ -1129,6 +1129,17 @@
|
||||
});
|
||||
});
|
||||
|
||||
//
|
||||
// Block: Override language used for translations.
|
||||
//
|
||||
if (ensurePropertyExists(TD, "languages", "getSystemLanguageCode")){
|
||||
const prevFunc = TD.languages.getSystemLanguageCode;
|
||||
|
||||
TD.languages.getSystemLanguageCode = function(returnShortCode){
|
||||
return returnShortCode ? ($TDX.translationTarget || "en") : prevFunc.apply(this, arguments);
|
||||
};
|
||||
}
|
||||
|
||||
//
|
||||
// Block: Setup global function to refresh all columns.
|
||||
//
|
||||
|
Loading…
Reference in New Issue
Block a user