From 8d3b7489b565646ead0a1b750379589e8a330225 Mon Sep 17 00:00:00 2001
From: ScrubN <72096833+ScrubN@users.noreply.github.com>
Date: Sun, 26 May 2024 14:07:19 -0400
Subject: [PATCH 1/2] Clear comboBadges before adding badge mask items

---
 TwitchDownloaderWPF/PageChatRender.xaml.cs | 1 +
 1 file changed, 1 insertion(+)

diff --git a/TwitchDownloaderWPF/PageChatRender.xaml.cs b/TwitchDownloaderWPF/PageChatRender.xaml.cs
index f31e6170..a189a3e8 100644
--- a/TwitchDownloaderWPF/PageChatRender.xaml.cs
+++ b/TwitchDownloaderWPF/PageChatRender.xaml.cs
@@ -195,6 +195,7 @@ private void LoadSettings()
                 RadioEmojiTwemoji.IsChecked = (EmojiVendor)Settings.Default.RenderEmojiVendor == EmojiVendor.TwitterTwemoji;
                 RadioEmojiNone.IsChecked = (EmojiVendor)Settings.Default.RenderEmojiVendor == EmojiVendor.None;
 
+                comboBadges.Items.Clear();
                 comboBadges.Items.Add(new ChatBadgeListItem() { Type = ChatBadgeType.Broadcaster, Name = "Broadcaster" });
                 comboBadges.Items.Add(new ChatBadgeListItem() { Type = ChatBadgeType.Moderator, Name = "Mods" });
                 comboBadges.Items.Add(new ChatBadgeListItem() { Type = ChatBadgeType.VIP, Name = "VIPs" });

From d837ab6145d1638dfdd9bc0ce7e9875e572906c3 Mon Sep 17 00:00:00 2001
From: ScrubN <72096833+ScrubN@users.noreply.github.com>
Date: Sun, 26 May 2024 14:23:58 -0400
Subject: [PATCH 2/2] Support translating chatrender badge mask items

---
 TwitchDownloaderWPF/PageChatRender.xaml.cs    | 41 +++++------
 .../Translations/Strings.Designer.cs          | 72 +++++++++++++++++++
 .../Translations/Strings.es.resx              | 24 +++++++
 .../Translations/Strings.fr.resx              | 24 +++++++
 .../Translations/Strings.it.resx              | 24 +++++++
 .../Translations/Strings.ja.resx              | 25 ++++++-
 .../Translations/Strings.pl.resx              | 24 +++++++
 .../Translations/Strings.pt-br.resx           | 24 +++++++
 TwitchDownloaderWPF/Translations/Strings.resx | 24 +++++++
 .../Translations/Strings.ru.resx              | 24 +++++++
 .../Translations/Strings.tr.resx              | 24 +++++++
 .../Translations/Strings.uk.resx              | 24 +++++++
 .../Translations/Strings.zh-cn.resx           | 24 +++++++
 13 files changed, 352 insertions(+), 26 deletions(-)

diff --git a/TwitchDownloaderWPF/PageChatRender.xaml.cs b/TwitchDownloaderWPF/PageChatRender.xaml.cs
index a189a3e8..21d5d19b 100644
--- a/TwitchDownloaderWPF/PageChatRender.xaml.cs
+++ b/TwitchDownloaderWPF/PageChatRender.xaml.cs
@@ -20,6 +20,7 @@
 using TwitchDownloaderCore.TwitchObjects;
 using TwitchDownloaderWPF.Models;
 using TwitchDownloaderWPF.Properties;
+using TwitchDownloaderWPF.Translations;
 using TwitchDownloaderWPF.Utils;
 using WpfAnimatedGif;
 using MessageBox = System.Windows.MessageBox;
@@ -146,7 +147,7 @@ public ChatRenderOptions GetOptions(string filename)
                 options.EmojiVendor = EmojiVendor.None;
             foreach (var item in comboBadges.SelectedItems)
             {
-                options.ChatBadgeMask += (int)((ChatBadgeListItem)item).Type;
+                options.ChatBadgeMask += (int)((CheckComboBoxItem)item).Tag;
             }
 
             return options;
@@ -196,19 +197,22 @@ private void LoadSettings()
                 RadioEmojiNone.IsChecked = (EmojiVendor)Settings.Default.RenderEmojiVendor == EmojiVendor.None;
 
                 comboBadges.Items.Clear();
-                comboBadges.Items.Add(new ChatBadgeListItem() { Type = ChatBadgeType.Broadcaster, Name = "Broadcaster" });
-                comboBadges.Items.Add(new ChatBadgeListItem() { Type = ChatBadgeType.Moderator, Name = "Mods" });
-                comboBadges.Items.Add(new ChatBadgeListItem() { Type = ChatBadgeType.VIP, Name = "VIPs" });
-                comboBadges.Items.Add(new ChatBadgeListItem() { Type = ChatBadgeType.Subscriber, Name = "Subs" });
-                comboBadges.Items.Add(new ChatBadgeListItem() { Type = ChatBadgeType.Predictions, Name = "Predictions" });
-                comboBadges.Items.Add(new ChatBadgeListItem() { Type = ChatBadgeType.NoAudioVisual, Name = "No Audio/No Video" });
-                comboBadges.Items.Add(new ChatBadgeListItem() { Type = ChatBadgeType.PrimeGaming, Name = "Prime" });
-                comboBadges.Items.Add(new ChatBadgeListItem() { Type = ChatBadgeType.Other, Name = "Others" });
-
-                foreach (ChatBadgeListItem item in comboBadges.Items)
+                comboBadges.Items.Add(new CheckComboBoxItem { Content = Strings.BadgeMaskBroadcaster, Tag = ChatBadgeType.Broadcaster });
+                comboBadges.Items.Add(new CheckComboBoxItem { Content = Strings.BadgeMaskModerator, Tag = ChatBadgeType.Moderator });
+                comboBadges.Items.Add(new CheckComboBoxItem { Content = Strings.BadgeMaskVIP, Tag = ChatBadgeType.VIP });
+                comboBadges.Items.Add(new CheckComboBoxItem { Content = Strings.BadgeMaskSubscriber, Tag = ChatBadgeType.Subscriber });
+                comboBadges.Items.Add(new CheckComboBoxItem { Content = Strings.BadgeMaskPredictions, Tag = ChatBadgeType.Predictions });
+                comboBadges.Items.Add(new CheckComboBoxItem { Content = Strings.BadgeMaskNoAudioNoVideo, Tag = ChatBadgeType.NoAudioVisual });
+                comboBadges.Items.Add(new CheckComboBoxItem { Content = Strings.BadgeMaskTwitchPrime, Tag = ChatBadgeType.PrimeGaming });
+                comboBadges.Items.Add(new CheckComboBoxItem { Content = Strings.BadgeMaskOthers, Tag = ChatBadgeType.Other });
+
+                var badgeMask = (ChatBadgeType)Settings.Default.ChatBadgeMask;
+                foreach (CheckComboBoxItem item in comboBadges.Items)
                 {
-                    if (((ChatBadgeType)Settings.Default.ChatBadgeMask).HasFlag(item.Type))
+                    if (badgeMask.HasFlag((Enum)item.Tag))
+                    {
                         comboBadges.SelectedItems.Add(item);
+                    }
                 }
 
                 foreach (VideoContainer container in comboFormat.Items)
@@ -317,7 +321,7 @@ public void SaveSettings()
             int newMask = 0;
             foreach (var item in comboBadges.SelectedItems)
             {
-                newMask += (int)((ChatBadgeListItem)item).Type;
+                newMask += (int)((CheckComboBoxItem)item).Tag;
             }
             Settings.Default.ChatBadgeMask = newMask;
 
@@ -739,17 +743,6 @@ private void TextJson_TextChanged(object sender, TextChangedEventArgs e)
         }
     }
 
-    public class ChatBadgeListItem
-    {
-        public ChatBadgeType Type { get; set; }
-        public string Name { get; set; }
-
-        public override string ToString()
-        {
-            return Name;
-        }
-    }
-
     public class VideoContainer
     {
         public string Name;
diff --git a/TwitchDownloaderWPF/Translations/Strings.Designer.cs b/TwitchDownloaderWPF/Translations/Strings.Designer.cs
index 37c70ac4..a61b3835 100644
--- a/TwitchDownloaderWPF/Translations/Strings.Designer.cs
+++ b/TwitchDownloaderWPF/Translations/Strings.Designer.cs
@@ -167,6 +167,78 @@ public static string BackgroundColor {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Broadcaster.
+        /// </summary>
+        public static string BadgeMaskBroadcaster {
+            get {
+                return ResourceManager.GetString("BadgeMaskBroadcaster", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Mods.
+        /// </summary>
+        public static string BadgeMaskModerator {
+            get {
+                return ResourceManager.GetString("BadgeMaskModerator", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to No Audio/No Video.
+        /// </summary>
+        public static string BadgeMaskNoAudioNoVideo {
+            get {
+                return ResourceManager.GetString("BadgeMaskNoAudioNoVideo", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Others.
+        /// </summary>
+        public static string BadgeMaskOthers {
+            get {
+                return ResourceManager.GetString("BadgeMaskOthers", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Predictions.
+        /// </summary>
+        public static string BadgeMaskPredictions {
+            get {
+                return ResourceManager.GetString("BadgeMaskPredictions", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Subs.
+        /// </summary>
+        public static string BadgeMaskSubscriber {
+            get {
+                return ResourceManager.GetString("BadgeMaskSubscriber", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Prime.
+        /// </summary>
+        public static string BadgeMaskTwitchPrime {
+            get {
+                return ResourceManager.GetString("BadgeMaskTwitchPrime", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to VIPs.
+        /// </summary>
+        public static string BadgeMaskVIP {
+            get {
+                return ResourceManager.GetString("BadgeMaskVIP", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Badge Scale:.
         /// </summary>
diff --git a/TwitchDownloaderWPF/Translations/Strings.es.resx b/TwitchDownloaderWPF/Translations/Strings.es.resx
index c7792dc6..61564b5f 100644
--- a/TwitchDownloaderWPF/Translations/Strings.es.resx
+++ b/TwitchDownloaderWPF/Translations/Strings.es.resx
@@ -874,4 +874,28 @@
   <data name="IncreaseUsernameReadability" xml:space="preserve">
     <value>Increase Username Readability:</value>
   </data>
+  <data name="BadgeMaskBroadcaster" xml:space="preserve">
+    <value>Broadcaster</value>
+  </data>
+  <data name="BadgeMaskModerator" xml:space="preserve">
+    <value>Mods</value>
+  </data>
+  <data name="BadgeMaskVIP" xml:space="preserve">
+    <value>VIPs</value>
+  </data>
+  <data name="BadgeMaskSubscriber" xml:space="preserve">
+    <value>Subs</value>
+  </data>
+  <data name="BadgeMaskPredictions" xml:space="preserve">
+    <value>Predictions</value>
+  </data>
+  <data name="BadgeMaskNoAudioNoVideo" xml:space="preserve">
+    <value>No Audio/No Video</value>
+  </data>
+  <data name="BadgeMaskTwitchPrime" xml:space="preserve">
+    <value>Prime</value>
+  </data>
+  <data name="BadgeMaskOthers" xml:space="preserve">
+    <value>Others</value>
+  </data>
 </root>
diff --git a/TwitchDownloaderWPF/Translations/Strings.fr.resx b/TwitchDownloaderWPF/Translations/Strings.fr.resx
index a9a65206..8477fd56 100644
--- a/TwitchDownloaderWPF/Translations/Strings.fr.resx
+++ b/TwitchDownloaderWPF/Translations/Strings.fr.resx
@@ -873,4 +873,28 @@
   <data name="IncreaseUsernameReadability" xml:space="preserve">
     <value>Increase Username Readability:</value>
   </data>
+  <data name="BadgeMaskBroadcaster" xml:space="preserve">
+    <value>Broadcaster</value>
+  </data>
+  <data name="BadgeMaskModerator" xml:space="preserve">
+    <value>Mods</value>
+  </data>
+  <data name="BadgeMaskVIP" xml:space="preserve">
+    <value>VIPs</value>
+  </data>
+  <data name="BadgeMaskSubscriber" xml:space="preserve">
+    <value>Subs</value>
+  </data>
+  <data name="BadgeMaskPredictions" xml:space="preserve">
+    <value>Predictions</value>
+  </data>
+  <data name="BadgeMaskNoAudioNoVideo" xml:space="preserve">
+    <value>No Audio/No Video</value>
+  </data>
+  <data name="BadgeMaskTwitchPrime" xml:space="preserve">
+    <value>Prime</value>
+  </data>
+  <data name="BadgeMaskOthers" xml:space="preserve">
+    <value>Others</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/TwitchDownloaderWPF/Translations/Strings.it.resx b/TwitchDownloaderWPF/Translations/Strings.it.resx
index 54810a9c..6a8981aa 100644
--- a/TwitchDownloaderWPF/Translations/Strings.it.resx
+++ b/TwitchDownloaderWPF/Translations/Strings.it.resx
@@ -874,4 +874,28 @@
   <data name="IncreaseUsernameReadability" xml:space="preserve">
     <value>Increase Username Readability:</value>
   </data>
+  <data name="BadgeMaskBroadcaster" xml:space="preserve">
+    <value>Broadcaster</value>
+  </data>
+  <data name="BadgeMaskModerator" xml:space="preserve">
+    <value>Mods</value>
+  </data>
+  <data name="BadgeMaskVIP" xml:space="preserve">
+    <value>VIPs</value>
+  </data>
+  <data name="BadgeMaskSubscriber" xml:space="preserve">
+    <value>Subs</value>
+  </data>
+  <data name="BadgeMaskPredictions" xml:space="preserve">
+    <value>Predictions</value>
+  </data>
+  <data name="BadgeMaskNoAudioNoVideo" xml:space="preserve">
+    <value>No Audio/No Video</value>
+  </data>
+  <data name="BadgeMaskTwitchPrime" xml:space="preserve">
+    <value>Prime</value>
+  </data>
+  <data name="BadgeMaskOthers" xml:space="preserve">
+    <value>Others</value>
+  </data>
 </root>
diff --git a/TwitchDownloaderWPF/Translations/Strings.ja.resx b/TwitchDownloaderWPF/Translations/Strings.ja.resx
index 457c007d..94d29be0 100644
--- a/TwitchDownloaderWPF/Translations/Strings.ja.resx
+++ b/TwitchDownloaderWPF/Translations/Strings.ja.resx
@@ -872,7 +872,28 @@
   <data name="IncreaseUsernameReadability" xml:space="preserve">
     <value>ユーザー名の読みやすさを向上する:</value>
   </data>
-  <data name="IncreaseUsernameReadability" xml:space="preserve">
-    <value>Increase Username Readability:</value>
+  <data name="BadgeMaskBroadcaster" xml:space="preserve">
+    <value>Broadcaster</value>
+  </data>
+  <data name="BadgeMaskModerator" xml:space="preserve">
+    <value>Mods</value>
+  </data>
+  <data name="BadgeMaskVIP" xml:space="preserve">
+    <value>VIPs</value>
+  </data>
+  <data name="BadgeMaskSubscriber" xml:space="preserve">
+    <value>Subs</value>
+  </data>
+  <data name="BadgeMaskPredictions" xml:space="preserve">
+    <value>Predictions</value>
+  </data>
+  <data name="BadgeMaskNoAudioNoVideo" xml:space="preserve">
+    <value>No Audio/No Video</value>
+  </data>
+  <data name="BadgeMaskTwitchPrime" xml:space="preserve">
+    <value>Prime</value>
+  </data>
+  <data name="BadgeMaskOthers" xml:space="preserve">
+    <value>Others</value>
   </data>
 </root>
\ No newline at end of file
diff --git a/TwitchDownloaderWPF/Translations/Strings.pl.resx b/TwitchDownloaderWPF/Translations/Strings.pl.resx
index 8df5edfe..819bde7a 100644
--- a/TwitchDownloaderWPF/Translations/Strings.pl.resx
+++ b/TwitchDownloaderWPF/Translations/Strings.pl.resx
@@ -873,4 +873,28 @@
   <data name="IncreaseUsernameReadability" xml:space="preserve">
     <value>Increase Username Readability:</value>
   </data>
+  <data name="BadgeMaskBroadcaster" xml:space="preserve">
+    <value>Broadcaster</value>
+  </data>
+  <data name="BadgeMaskModerator" xml:space="preserve">
+    <value>Mods</value>
+  </data>
+  <data name="BadgeMaskVIP" xml:space="preserve">
+    <value>VIPs</value>
+  </data>
+  <data name="BadgeMaskSubscriber" xml:space="preserve">
+    <value>Subs</value>
+  </data>
+  <data name="BadgeMaskPredictions" xml:space="preserve">
+    <value>Predictions</value>
+  </data>
+  <data name="BadgeMaskNoAudioNoVideo" xml:space="preserve">
+    <value>No Audio/No Video</value>
+  </data>
+  <data name="BadgeMaskTwitchPrime" xml:space="preserve">
+    <value>Prime</value>
+  </data>
+  <data name="BadgeMaskOthers" xml:space="preserve">
+    <value>Others</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/TwitchDownloaderWPF/Translations/Strings.pt-br.resx b/TwitchDownloaderWPF/Translations/Strings.pt-br.resx
index ff3dcaff..33577e25 100644
--- a/TwitchDownloaderWPF/Translations/Strings.pt-br.resx
+++ b/TwitchDownloaderWPF/Translations/Strings.pt-br.resx
@@ -872,4 +872,28 @@
   <data name="IncreaseUsernameReadability" xml:space="preserve">
     <value>Increase Username Readability:</value>
   </data>
+  <data name="BadgeMaskBroadcaster" xml:space="preserve">
+    <value>Broadcaster</value>
+  </data>
+  <data name="BadgeMaskModerator" xml:space="preserve">
+    <value>Mods</value>
+  </data>
+  <data name="BadgeMaskVIP" xml:space="preserve">
+    <value>VIPs</value>
+  </data>
+  <data name="BadgeMaskSubscriber" xml:space="preserve">
+    <value>Subs</value>
+  </data>
+  <data name="BadgeMaskPredictions" xml:space="preserve">
+    <value>Predictions</value>
+  </data>
+  <data name="BadgeMaskNoAudioNoVideo" xml:space="preserve">
+    <value>No Audio/No Video</value>
+  </data>
+  <data name="BadgeMaskTwitchPrime" xml:space="preserve">
+    <value>Prime</value>
+  </data>
+  <data name="BadgeMaskOthers" xml:space="preserve">
+    <value>Others</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/TwitchDownloaderWPF/Translations/Strings.resx b/TwitchDownloaderWPF/Translations/Strings.resx
index 825e07a7..0db53f84 100644
--- a/TwitchDownloaderWPF/Translations/Strings.resx
+++ b/TwitchDownloaderWPF/Translations/Strings.resx
@@ -872,4 +872,28 @@
   <data name="IncreaseUsernameReadability" xml:space="preserve">
     <value>Increase Username Readability:</value>
   </data>
+  <data name="BadgeMaskBroadcaster" xml:space="preserve">
+    <value>Broadcaster</value>
+  </data>
+  <data name="BadgeMaskModerator" xml:space="preserve">
+    <value>Mods</value>
+  </data>
+  <data name="BadgeMaskVIP" xml:space="preserve">
+    <value>VIPs</value>
+  </data>
+  <data name="BadgeMaskSubscriber" xml:space="preserve">
+    <value>Subs</value>
+  </data>
+  <data name="BadgeMaskPredictions" xml:space="preserve">
+    <value>Predictions</value>
+  </data>
+  <data name="BadgeMaskNoAudioNoVideo" xml:space="preserve">
+    <value>No Audio/No Video</value>
+  </data>
+  <data name="BadgeMaskTwitchPrime" xml:space="preserve">
+    <value>Prime</value>
+  </data>
+  <data name="BadgeMaskOthers" xml:space="preserve">
+    <value>Others</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/TwitchDownloaderWPF/Translations/Strings.ru.resx b/TwitchDownloaderWPF/Translations/Strings.ru.resx
index 4e34e9bb..5b299529 100644
--- a/TwitchDownloaderWPF/Translations/Strings.ru.resx
+++ b/TwitchDownloaderWPF/Translations/Strings.ru.resx
@@ -873,4 +873,28 @@
   <data name="IncreaseUsernameReadability" xml:space="preserve">
     <value>Increase Username Readability:</value>
   </data>
+  <data name="BadgeMaskBroadcaster" xml:space="preserve">
+    <value>Broadcaster</value>
+  </data>
+  <data name="BadgeMaskModerator" xml:space="preserve">
+    <value>Mods</value>
+  </data>
+  <data name="BadgeMaskVIP" xml:space="preserve">
+    <value>VIPs</value>
+  </data>
+  <data name="BadgeMaskSubscriber" xml:space="preserve">
+    <value>Subs</value>
+  </data>
+  <data name="BadgeMaskPredictions" xml:space="preserve">
+    <value>Predictions</value>
+  </data>
+  <data name="BadgeMaskNoAudioNoVideo" xml:space="preserve">
+    <value>No Audio/No Video</value>
+  </data>
+  <data name="BadgeMaskTwitchPrime" xml:space="preserve">
+    <value>Prime</value>
+  </data>
+  <data name="BadgeMaskOthers" xml:space="preserve">
+    <value>Others</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/TwitchDownloaderWPF/Translations/Strings.tr.resx b/TwitchDownloaderWPF/Translations/Strings.tr.resx
index 2797f533..9476b7c7 100644
--- a/TwitchDownloaderWPF/Translations/Strings.tr.resx
+++ b/TwitchDownloaderWPF/Translations/Strings.tr.resx
@@ -874,4 +874,28 @@
   <data name="IncreaseUsernameReadability" xml:space="preserve">
     <value>Increase Username Readability:</value>
   </data>
+  <data name="BadgeMaskBroadcaster" xml:space="preserve">
+    <value>Broadcaster</value>
+  </data>
+  <data name="BadgeMaskModerator" xml:space="preserve">
+    <value>Mods</value>
+  </data>
+  <data name="BadgeMaskVIP" xml:space="preserve">
+    <value>VIPs</value>
+  </data>
+  <data name="BadgeMaskSubscriber" xml:space="preserve">
+    <value>Subs</value>
+  </data>
+  <data name="BadgeMaskPredictions" xml:space="preserve">
+    <value>Predictions</value>
+  </data>
+  <data name="BadgeMaskNoAudioNoVideo" xml:space="preserve">
+    <value>No Audio/No Video</value>
+  </data>
+  <data name="BadgeMaskTwitchPrime" xml:space="preserve">
+    <value>Prime</value>
+  </data>
+  <data name="BadgeMaskOthers" xml:space="preserve">
+    <value>Others</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/TwitchDownloaderWPF/Translations/Strings.uk.resx b/TwitchDownloaderWPF/Translations/Strings.uk.resx
index de475c3b..9b16c853 100644
--- a/TwitchDownloaderWPF/Translations/Strings.uk.resx
+++ b/TwitchDownloaderWPF/Translations/Strings.uk.resx
@@ -873,4 +873,28 @@
   <data name="IncreaseUsernameReadability" xml:space="preserve">
     <value>Increase Username Readability:</value>
   </data>
+  <data name="BadgeMaskBroadcaster" xml:space="preserve">
+    <value>Broadcaster</value>
+  </data>
+  <data name="BadgeMaskModerator" xml:space="preserve">
+    <value>Mods</value>
+  </data>
+  <data name="BadgeMaskVIP" xml:space="preserve">
+    <value>VIPs</value>
+  </data>
+  <data name="BadgeMaskSubscriber" xml:space="preserve">
+    <value>Subs</value>
+  </data>
+  <data name="BadgeMaskPredictions" xml:space="preserve">
+    <value>Predictions</value>
+  </data>
+  <data name="BadgeMaskNoAudioNoVideo" xml:space="preserve">
+    <value>No Audio/No Video</value>
+  </data>
+  <data name="BadgeMaskTwitchPrime" xml:space="preserve">
+    <value>Prime</value>
+  </data>
+  <data name="BadgeMaskOthers" xml:space="preserve">
+    <value>Others</value>
+  </data>
 </root>
diff --git a/TwitchDownloaderWPF/Translations/Strings.zh-cn.resx b/TwitchDownloaderWPF/Translations/Strings.zh-cn.resx
index 6c92e24d..54313e1a 100644
--- a/TwitchDownloaderWPF/Translations/Strings.zh-cn.resx
+++ b/TwitchDownloaderWPF/Translations/Strings.zh-cn.resx
@@ -875,4 +875,28 @@
   <data name="IncreaseUsernameReadability" xml:space="preserve">
     <value>Increase Username Readability:</value>
   </data>
+  <data name="BadgeMaskBroadcaster" xml:space="preserve">
+    <value>Broadcaster</value>
+  </data>
+  <data name="BadgeMaskModerator" xml:space="preserve">
+    <value>Mods</value>
+  </data>
+  <data name="BadgeMaskVIP" xml:space="preserve">
+    <value>VIPs</value>
+  </data>
+  <data name="BadgeMaskSubscriber" xml:space="preserve">
+    <value>Subs</value>
+  </data>
+  <data name="BadgeMaskPredictions" xml:space="preserve">
+    <value>Predictions</value>
+  </data>
+  <data name="BadgeMaskNoAudioNoVideo" xml:space="preserve">
+    <value>No Audio/No Video</value>
+  </data>
+  <data name="BadgeMaskTwitchPrime" xml:space="preserve">
+    <value>Prime</value>
+  </data>
+  <data name="BadgeMaskOthers" xml:space="preserve">
+    <value>Others</value>
+  </data>
 </root>