diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/RegionType.cs b/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/RegionType.cs
similarity index 85%
rename from src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/RegionType.cs
rename to src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/RegionType.cs
index 565aa9c3..5022a74f 100644
--- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/RegionType.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/RegionType.cs
@@ -1,7 +1,7 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
-namespace Snap.Hutao.Web.Hoyolab;
+namespace Snap.Hutao.Model.Intrinsic;
[HighQuality]
internal enum RegionType
diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx
index 3962d02a..a949046c 100644
--- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx
+++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx
@@ -355,6 +355,24 @@
一星
+
+ 国服 官方服
+
+
+ 国服 渠道服
+
+
+ 国际服 亚服
+
+
+ 国际服 台服
+
+
+ 国际服 欧服
+
+
+ 国际服 美服
+
弓
Need EXACT same string in game
diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Abstraction/IAnnouncementService.cs b/src/Snap.Hutao/Snap.Hutao/Service/Abstraction/IAnnouncementService.cs
index 3c86893a..65efd10f 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/Abstraction/IAnnouncementService.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/Abstraction/IAnnouncementService.cs
@@ -1,7 +1,7 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
-using Snap.Hutao.Web.Hoyolab;
+using Snap.Hutao.Model.Intrinsic;
using Snap.Hutao.Web.Hoyolab.Hk4e.Common.Announcement;
namespace Snap.Hutao.Service.Abstraction;
diff --git a/src/Snap.Hutao/Snap.Hutao/Service/AnnouncementService.cs b/src/Snap.Hutao/Snap.Hutao/Service/AnnouncementService.cs
index aac92b84..49b1d9b2 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/AnnouncementService.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/AnnouncementService.cs
@@ -2,8 +2,8 @@
// Licensed under the MIT license.
using Microsoft.Extensions.Caching.Memory;
+using Snap.Hutao.Model.Intrinsic;
using Snap.Hutao.Service.Abstraction;
-using Snap.Hutao.Web.Hoyolab;
using Snap.Hutao.Web.Hoyolab.Hk4e.Common.Announcement;
using Snap.Hutao.Web.Response;
using System.Globalization;
diff --git a/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs b/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs
index 6c9c7965..a6646454 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs
@@ -5,8 +5,8 @@ using Microsoft.Extensions.Primitives;
using Snap.Hutao.Core.Windowing;
using Snap.Hutao.Model;
using Snap.Hutao.Model.Entity;
+using Snap.Hutao.Model.Intrinsic;
using Snap.Hutao.Service.Abstraction;
-using Snap.Hutao.Web.Hoyolab;
using System.Globalization;
using System.IO;
@@ -74,7 +74,7 @@ internal sealed partial class AppOptions : DbStoreOptions
set => SetOption(ref currentCulture, SettingEntry.Culture, value, value => value.Name);
}
- public List> RegionTypes { get; } = CollectionsNameValue.FromEnum();
+ public List> RegionTypes { get; } = SupportedRegionTypes.Get();
public RegionType RegionType
{
diff --git a/src/Snap.Hutao/Snap.Hutao/Service/SupportedRegionTypes.cs b/src/Snap.Hutao/Snap.Hutao/Service/SupportedRegionTypes.cs
new file mode 100644
index 00000000..5e585cf7
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Service/SupportedRegionTypes.cs
@@ -0,0 +1,41 @@
+// Copyright (c) DGP Studio. All rights reserved.
+// Licensed under the MIT license.
+
+using Snap.Hutao.Model;
+using Snap.Hutao.Model.Intrinsic;
+
+namespace Snap.Hutao.Service;
+
+internal static class SupportedRegionTypes
+{
+ private static readonly List> Cultures =
+ [
+ ToNameValue(RegionType.CN_GF01),
+ ToNameValue(RegionType.CN_QD01),
+ ToNameValue(RegionType.OS_USA),
+ ToNameValue(RegionType.OS_EURO),
+ ToNameValue(RegionType.OS_ASIA),
+ ToNameValue(RegionType.OS_CHT),
+ ];
+
+ public static List> Get()
+ {
+ return Cultures;
+ }
+
+ private static NameValue ToNameValue(RegionType regionType)
+ {
+ return new(
+ regionType switch
+ {
+ RegionType.CN_GF01 => SH.ModelIntrinsicRegionTypeCnGf01,
+ RegionType.CN_QD01 => SH.ModelIntrinsicRegionTypeCnQd01,
+ RegionType.OS_USA => SH.ModelIntrinsicRegionTypeOsUsa,
+ RegionType.OS_EURO => SH.ModelIntrinsicRegionTypeOsEuro,
+ RegionType.OS_ASIA => SH.ModelIntrinsicRegionTypeOsAsia,
+ RegionType.OS_CHT => SH.ModelIntrinsicRegionTypeOsCht,
+ _ => SH.ModelIntrinsicRegionTypeCnGf01,
+ },
+ regionType);
+ }
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/SettingViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/SettingViewModel.cs
index 78eca7d3..4a4613c8 100644
--- a/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/SettingViewModel.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/SettingViewModel.cs
@@ -13,6 +13,7 @@ using Snap.Hutao.Core.Windowing.HotKey;
using Snap.Hutao.Factory.ContentDialog;
using Snap.Hutao.Factory.Picker;
using Snap.Hutao.Model;
+using Snap.Hutao.Model.Intrinsic;
using Snap.Hutao.Service;
using Snap.Hutao.Service.GachaLog.QueryProvider;
using Snap.Hutao.Service.Game;
@@ -23,7 +24,6 @@ using Snap.Hutao.Service.Notification;
using Snap.Hutao.Service.User;
using Snap.Hutao.View.Dialog;
using Snap.Hutao.ViewModel.Guide;
-using Snap.Hutao.Web.Hoyolab;
using Snap.Hutao.Web.Hutao;
using Snap.Hutao.Web.Response;
using System.Globalization;
diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Hk4e/Common/Announcement/AnnouncementClient.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Hk4e/Common/Announcement/AnnouncementClient.cs
index 417d6137..74711855 100644
--- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Hk4e/Common/Announcement/AnnouncementClient.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Hk4e/Common/Announcement/AnnouncementClient.cs
@@ -2,6 +2,7 @@
// Licensed under the MIT license.
using Snap.Hutao.Core.DependencyInjection.Annotation.HttpClient;
+using Snap.Hutao.Model.Intrinsic;
using Snap.Hutao.Web.Request.Builder;
using Snap.Hutao.Web.Request.Builder.Abstraction;
using Snap.Hutao.Web.Response;