Skip to content

Commit e9728e0

Browse files
committed
perf: add localization support with resource files for loading messages
1 parent c772b97 commit e9728e0

11 files changed

Lines changed: 227 additions & 21 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,4 @@ nupkgs/
1818
.ionide
1919
*.user
2020
cwtools.local.props
21+
.vs/

fsharp-language-server.sln

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "build", "build\build.fsproj
2020
EndProject
2121
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpExtensions", "src\CSharpExtensions\CSharpExtensions.csproj", "{61AAD9EA-772E-4F7A-A23F-B4F24F35D4C5}"
2222
EndProject
23+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Languages", "src\Languages\Languages.csproj", "{6E3C08B7-CA8C-44F7-96EA-55794326B70D}"
24+
EndProject
2325
Global
2426
GlobalSection(SolutionConfigurationPlatforms) = preSolution
2527
Debug|Any CPU = Debug|Any CPU
@@ -117,10 +119,23 @@ Global
117119
{61AAD9EA-772E-4F7A-A23F-B4F24F35D4C5}.Release|x64.Build.0 = Release|Any CPU
118120
{61AAD9EA-772E-4F7A-A23F-B4F24F35D4C5}.Release|x86.ActiveCfg = Release|Any CPU
119121
{61AAD9EA-772E-4F7A-A23F-B4F24F35D4C5}.Release|x86.Build.0 = Release|Any CPU
122+
{6E3C08B7-CA8C-44F7-96EA-55794326B70D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
123+
{6E3C08B7-CA8C-44F7-96EA-55794326B70D}.Debug|Any CPU.Build.0 = Debug|Any CPU
124+
{6E3C08B7-CA8C-44F7-96EA-55794326B70D}.Debug|x64.ActiveCfg = Debug|Any CPU
125+
{6E3C08B7-CA8C-44F7-96EA-55794326B70D}.Debug|x64.Build.0 = Debug|Any CPU
126+
{6E3C08B7-CA8C-44F7-96EA-55794326B70D}.Debug|x86.ActiveCfg = Debug|Any CPU
127+
{6E3C08B7-CA8C-44F7-96EA-55794326B70D}.Debug|x86.Build.0 = Debug|Any CPU
128+
{6E3C08B7-CA8C-44F7-96EA-55794326B70D}.Release|Any CPU.ActiveCfg = Release|Any CPU
129+
{6E3C08B7-CA8C-44F7-96EA-55794326B70D}.Release|Any CPU.Build.0 = Release|Any CPU
130+
{6E3C08B7-CA8C-44F7-96EA-55794326B70D}.Release|x64.ActiveCfg = Release|Any CPU
131+
{6E3C08B7-CA8C-44F7-96EA-55794326B70D}.Release|x64.Build.0 = Release|Any CPU
132+
{6E3C08B7-CA8C-44F7-96EA-55794326B70D}.Release|x86.ActiveCfg = Release|Any CPU
133+
{6E3C08B7-CA8C-44F7-96EA-55794326B70D}.Release|x86.Build.0 = Release|Any CPU
120134
EndGlobalSection
121135
GlobalSection(NestedProjects) = preSolution
122136
{D0C97655-008A-4376-87A3-FD072D076F16} = {29A9E10D-C8C7-416D-B32D-820658A129A6}
123137
{AD9284CA-9934-4A4B-9C5C-AE680DFE0451} = {29A9E10D-C8C7-416D-B32D-820658A129A6}
124138
{61AAD9EA-772E-4F7A-A23F-B4F24F35D4C5} = {29A9E10D-C8C7-416D-B32D-820658A129A6}
139+
{6E3C08B7-CA8C-44F7-96EA-55794326B70D} = {29A9E10D-C8C7-416D-B32D-820658A129A6}
125140
EndGlobalSection
126141
EndGlobal
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
2+
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIGame_002Ecs_002Fl_003AC_0021_003FUsers_003FQWQ_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F6ef8b49f176426ab24e37ee95734976c1f4e00_003F2b_003F96ed908c_003FIGame_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
23
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AInt32_002Ecs_002Fl_003AC_0021_003FUsers_003FQWQ_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fb241c378a97f4447a2e6baf64e656013e8e910_003Fd4_003Fd06428fe_003FInt32_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
4+
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AJsonValue_002Ecs_002Fl_003AC_0021_003FUsers_003FQWQ_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5c936219f10b3444a74503831962935cefa00_003F3b_003Faaeee25c_003FJsonValue_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
35
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AString_002ESearching_002Ecs_002Fl_003AC_0021_003FUsers_003FQWQ_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003F80a8cc7ee71130a74c9b38bc4256839ca29706631fd8358dc57bfa48703a4_003FString_002ESearching_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
46
<s:String x:Key="/Default/Environment/AssemblyExplorer/XmlDocument/@EntryValue">&lt;AssemblyExplorer&gt;&#xD;
57
&lt;Assembly Path="C:\Users\Thomas\Git\cwtools-vscode\paket-files\git\localfilesystem\cwtools\CWTools\bin\Debug\netstandard2.0\CWTools.dll" /&gt;&#xD;
68
&lt;Assembly Path="D:\Code\Project\GitProject\cwtools\CWTools\bin\Release\net9.0\CWTools.dll" /&gt;&#xD;
7-
&lt;/AssemblyExplorer&gt;</s:String></wpf:ResourceDictionary>
9+
&lt;/AssemblyExplorer&gt;</s:String>
10+
<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=src_002FLanguages_002FLangResources/@EntryIndexedValue">True</s:Boolean>
11+
<s:Boolean x:Key="/Default/ResxEditorPersonal/Initialized/@EntryValue">True</s:Boolean>
12+
<s:Boolean x:Key="/Default/ResxEditorPersonal/ShowOnlyErrors/@EntryValue">False</s:Boolean></wpf:ResourceDictionary>

src/LSP/DocumentStore.fs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ module DocumentStoreUtils =
3939

4040
open DocumentStoreUtils
4141

42+
[<Sealed>]
4243
type DocumentStore() =
4344
/// All open documents, organized by absolute path
4445
let activeDocuments = Dictionary<string, Version>()

src/Languages/LangResources.Designer.cs

Lines changed: 98 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Languages/LangResources.resx

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
3+
<root>
4+
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
5+
<xsd:element name="root" msdata:IsDataSet="true">
6+
7+
</xsd:element>
8+
</xsd:schema>
9+
<resheader name="resmimetype">
10+
<value>text/microsoft-resx</value>
11+
</resheader>
12+
<resheader name="version">
13+
<value>1.3</value>
14+
</resheader>
15+
<resheader name="reader">
16+
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
17+
</resheader>
18+
<resheader name="writer">
19+
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
20+
</resheader>
21+
<data name="loadingBar.GeneratingVanillaCache" xml:space="preserve">
22+
<value>Generating vanilla cache...</value>
23+
</data>
24+
<data name="loadingBar.LoadingProject" xml:space="preserve">
25+
<value>Loading project</value>
26+
</data>
27+
<data name="vanillaCacheUpdated" xml:space="preserve">
28+
<value>Vanilla cache for {0} has been updated.</value>
29+
</data>
30+
<data name="loadingBar.ValidatingFiles" xml:space="preserve">
31+
<value>Validating files...</value>
32+
</data>
33+
</root>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<root>
2+
<resheader name="resmimetype">
3+
<value>text/microsoft-resx</value>
4+
</resheader>
5+
<resheader name="version">
6+
<value>1.3</value>
7+
</resheader>
8+
<resheader name="reader">
9+
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
10+
</resheader>
11+
<resheader name="writer">
12+
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
13+
</resheader>
14+
<data name="loadingBar.GeneratingVanillaCache" xml:space="preserve">
15+
<value>生成原版缓存中...</value>
16+
</data>
17+
<data name="loadingBar.LoadingProject" xml:space="preserve">
18+
<value>加载项目中...</value>
19+
</data>
20+
<data name="vanillaCacheUpdated" xml:space="preserve">
21+
<value>{0} 原版缓存已刷新</value>
22+
</data>
23+
<data name="loadingBar.ValidatingFiles" xml:space="preserve">
24+
<value>正在验证文件...</value>
25+
</data>
26+
</root>

src/Languages/Languages.csproj

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net9.0</TargetFramework>
5+
<ImplicitUsings>enable</ImplicitUsings>
6+
<Nullable>enable</Nullable>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<EmbeddedResource Update="LangResources.resx">
11+
<Generator>PublicResXFileCodeGenerator</Generator>
12+
<LastGenOutput>LangResources.Designer.cs</LastGenOutput>
13+
</EmbeddedResource>
14+
</ItemGroup>
15+
16+
<ItemGroup>
17+
<Compile Update="LangResources.Designer.cs">
18+
<DesignTime>True</DesignTime>
19+
<AutoGen>True</AutoGen>
20+
<DependentUpon>LangResources.resx</DependentUpon>
21+
</Compile>
22+
</ItemGroup>
23+
24+
</Project>

src/Main/LanguageServerFeatures.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ module LanguageServerFeatures =
2424

2525
if
2626
RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
27-
&& u.LocalPath.StartsWith "/"
27+
&& u.LocalPath.StartsWith '/'
2828
then
2929
u.LocalPath.Substring(1)
3030
else

src/Main/Main.fsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<PublishReadyToRunComposite>true</PublishReadyToRunComposite>
1212
</PropertyGroup>
1313
<ItemGroup>
14+
<ProjectReference Include="..\Languages\Languages.csproj" />
1415
<RuntimeHostConfigurationOption Include="System.GC.NoAffinitize" Value="true" />
1516

1617
<ProjectReference Include="..\LSP\LSP.fsproj" />

0 commit comments

Comments
 (0)