diff --git a/SteamToolsV2+.sln b/SteamToolsV2+.sln
index 66b37e0671a..f92b7edcea6 100644
--- a/SteamToolsV2+.sln
+++ b/SteamToolsV2+.sln
@@ -1828,7 +1828,7 @@ Global
{FB2CA9B4-71F1-48E8-B9AE-FF4375F4FE43} = {CC46B486-00D7-49E6-ABA3-FDF8F4868D2B}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {9313F2B4-10DA-43AA-A481-CAA7571C740C}
RESX_NeutralResourcesLanguage = zh-Hans
+ SolutionGuid = {9313F2B4-10DA-43AA-A481-CAA7571C740C}
EndGlobalSection
EndGlobal
diff --git a/src/Common.PinyinLib.PinIn/Common.PinyinLib.PinIn.csproj b/src/Common.PinyinLib.PinIn/Common.PinyinLib.PinIn.csproj
new file mode 100644
index 00000000000..23f304cfd41
--- /dev/null
+++ b/src/Common.PinyinLib.PinIn/Common.PinyinLib.PinIn.csproj
@@ -0,0 +1,41 @@
+
+
+
+ MonoAndroid11.0;netstandard2.1
+ System
+ System.Common.PinyinLib.PinIn
+
+
+
+ false
+ true
+
+
+
+
+ Properties\AssemblyInfo.cs
+
+
+ Properties\AssemblyInfo.Version.cs
+
+
+ Properties\InternalsVisibleTo.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Common.PinyinLib.PinIn/Jars/PinIn-1.5.0-all.jar b/src/Common.PinyinLib.PinIn/Jars/PinIn-1.5.0-all.jar
new file mode 100644
index 00000000000..b2a753973d9
Binary files /dev/null and b/src/Common.PinyinLib.PinIn/Jars/PinIn-1.5.0-all.jar differ
diff --git a/src/Common.PinyinLib.PinIn/PinyinImpl.cs b/src/Common.PinyinLib.PinIn/PinyinImpl.cs
new file mode 100644
index 00000000000..e6f95747e3e
--- /dev/null
+++ b/src/Common.PinyinLib.PinIn/PinyinImpl.cs
@@ -0,0 +1,35 @@
+using System.Collections.Generic;
+using System.Text;
+#if MONOANDROID
+using ME.Towdium.Pinin;
+using PininFormat = ME.Towdium.Pinin.Utils.PinyinFormat;
+#endif
+
+// ReSharper disable once CheckNamespace
+namespace System.Application.Services.Implementation
+{
+ ///
+ /// 使用 (https://github.com/Towdium/PinIn) or (https://github.com/LasmGratel/PininSharp) 实现的拼音功能
+ ///
+ internal sealed class PinyinImpl : IPinyin
+ {
+ readonly PinIn p;
+
+ public PinyinImpl()
+ {
+ p = new();
+ }
+
+ public string GetPinyin(string s, PinyinFormat format)
+ {
+ var pinyin = p.GetPinyin(s);
+ return PininFormat.Raw.Format(pinyin);
+ return String.Empty;
+ }
+
+ public bool IsChinese(char c)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/src/Common.PinyinLib.PinIn/Transforms/Metadata.xml b/src/Common.PinyinLib.PinIn/Transforms/Metadata.xml
new file mode 100644
index 00000000000..e772d732168
--- /dev/null
+++ b/src/Common.PinyinLib.PinIn/Transforms/Metadata.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+