From 78ab9c12e64d5eff06a35f2d307d1011c09f4b88 Mon Sep 17 00:00:00 2001 From: heku Date: Sat, 31 Mar 2018 00:46:08 +0800 Subject: [PATCH] Find out a better way for localization --- .../Commands/EditProjectCommand.cs | 2 +- ....en-US.vsct => EditProjectPackage.en.vsct} | 30 +---------- ...age.zh-CN.vsct => EditProjectPackage.vsct} | 26 --------- .../EditProjectPackage.zh-Hans.vsct | 33 ++++++++++++ Kool.EditProject/Kool.EditProject.csproj | 28 ++++++---- Kool.EditProject/Properties/AssemblyInfo.cs | 2 +- Kool.EditProject/Resources.cs | 13 ----- Kool.EditProject/VSPackage.Designer.cs | 24 +++++++++ ...VSPackage.en-US.resx => VSPackage.en.resx} | 0 Kool.EditProject/VSPackage.tt | 53 +++++++++++++++++++ ...kage.zh-CN.resx => VSPackage.zh-Hans.resx} | 0 .../{zh-CN => zh-Hans}/extension.vsixlangpack | 0 12 files changed, 132 insertions(+), 79 deletions(-) rename Kool.EditProject/{EditProjectPackage.en-US.vsct => EditProjectPackage.en.vsct} (54%) rename Kool.EditProject/{EditProjectPackage.zh-CN.vsct => EditProjectPackage.vsct} (54%) create mode 100644 Kool.EditProject/EditProjectPackage.zh-Hans.vsct delete mode 100644 Kool.EditProject/Resources.cs create mode 100644 Kool.EditProject/VSPackage.Designer.cs rename Kool.EditProject/{VSPackage.en-US.resx => VSPackage.en.resx} (100%) create mode 100644 Kool.EditProject/VSPackage.tt rename Kool.EditProject/{VSPackage.zh-CN.resx => VSPackage.zh-Hans.resx} (100%) rename Kool.EditProject/{zh-CN => zh-Hans}/extension.vsixlangpack (100%) diff --git a/Kool.EditProject/Commands/EditProjectCommand.cs b/Kool.EditProject/Commands/EditProjectCommand.cs index b946c1f..b8b4f2a 100644 --- a/Kool.EditProject/Commands/EditProjectCommand.cs +++ b/Kool.EditProject/Commands/EditProjectCommand.cs @@ -44,7 +44,7 @@ protected override void OnBeforeQueryStatus() _projectFile = project.FullName; var fileName = Path.GetFileName(_projectFile); Visible = true; - Text = string.Format(Resources.EditMenuPattern, fileName); + Text = string.Format(VSPackage.EditMenuPattern, fileName); break; } } diff --git a/Kool.EditProject/EditProjectPackage.en-US.vsct b/Kool.EditProject/EditProjectPackage.en.vsct similarity index 54% rename from Kool.EditProject/EditProjectPackage.en-US.vsct rename to Kool.EditProject/EditProjectPackage.en.vsct index 987aa55..c5454c2 100644 --- a/Kool.EditProject/EditProjectPackage.en-US.vsct +++ b/Kool.EditProject/EditProjectPackage.en.vsct @@ -1,22 +1,9 @@  - + - - - - - + - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Kool.EditProject/EditProjectPackage.zh-CN.vsct b/Kool.EditProject/EditProjectPackage.vsct similarity index 54% rename from Kool.EditProject/EditProjectPackage.zh-CN.vsct rename to Kool.EditProject/EditProjectPackage.vsct index e25794e..b8cd6c3 100644 --- a/Kool.EditProject/EditProjectPackage.zh-CN.vsct +++ b/Kool.EditProject/EditProjectPackage.vsct @@ -16,32 +16,6 @@ - - - - - diff --git a/Kool.EditProject/EditProjectPackage.zh-Hans.vsct b/Kool.EditProject/EditProjectPackage.zh-Hans.vsct new file mode 100644 index 0000000..436fc38 --- /dev/null +++ b/Kool.EditProject/EditProjectPackage.zh-Hans.vsct @@ -0,0 +1,33 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Kool.EditProject/Kool.EditProject.csproj b/Kool.EditProject/Kool.EditProject.csproj index aad653e..e7d0996 100644 --- a/Kool.EditProject/Kool.EditProject.csproj +++ b/Kool.EditProject/Kool.EditProject.csproj @@ -54,14 +54,20 @@ - + + True + True + VSPackage.tt + - - Designer + + + TextTemplatingFileGenerator + VSPackage.Designer.cs @@ -173,30 +179,32 @@ - + Menus.ctmenu - + Menus.ctmenu + true - + true PreserveNewest - + true - VSPackage.en-US.Resources - + true - VSPackage.zh-CN.Resources + + + diff --git a/Kool.EditProject/Properties/AssemblyInfo.cs b/Kool.EditProject/Properties/AssemblyInfo.cs index 52e18c5..2c760b2 100644 --- a/Kool.EditProject/Properties/AssemblyInfo.cs +++ b/Kool.EditProject/Properties/AssemblyInfo.cs @@ -33,4 +33,4 @@ [assembly: AssemblyVersion(Vsix.VERSION)] // https://docs.microsoft.com/en-us/visualstudio/extensibility/localizing-menu-commands -[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] \ No newline at end of file +[assembly: NeutralResourcesLanguage("en", UltimateResourceFallbackLocation.Satellite)] \ No newline at end of file diff --git a/Kool.EditProject/Resources.cs b/Kool.EditProject/Resources.cs deleted file mode 100644 index d968e8f..0000000 --- a/Kool.EditProject/Resources.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Reflection; -using System.Resources; - -namespace Kool.EditProject -{ - internal static class Resources - { - private const string PACKAGE_RESX_FILE_NAME = "VSPackage"; - private static readonly ResourceManager Resx = new ResourceManager(PACKAGE_RESX_FILE_NAME, Assembly.GetExecutingAssembly()); - - public static string EditMenuPattern { get; } = Resx.GetString(nameof(EditMenuPattern)); - } -} \ No newline at end of file diff --git a/Kool.EditProject/VSPackage.Designer.cs b/Kool.EditProject/VSPackage.Designer.cs new file mode 100644 index 0000000..5556dcc --- /dev/null +++ b/Kool.EditProject/VSPackage.Designer.cs @@ -0,0 +1,24 @@ + + +// ------------------------------------------------------------------------------ +// +// This file was generated by T4 Template. +// +// ------------------------------------------------------------------------------ + +using System.Resources; + +namespace Kool.EditProject +{ + /// + /// A strongly-typed resource class, for looking up localized strings. + /// + static class VSPackage + { + static readonly ResourceManager Resx = new ResourceManager("Kool.EditProject.VSPackage", typeof(VSPackage).Assembly); + + public static string _110 { get; } = Resx.GetString("110"); + public static string _112 { get; } = Resx.GetString("112"); + public static string EditMenuPattern { get; } = Resx.GetString("EditMenuPattern"); + } +} \ No newline at end of file diff --git a/Kool.EditProject/VSPackage.en-US.resx b/Kool.EditProject/VSPackage.en.resx similarity index 100% rename from Kool.EditProject/VSPackage.en-US.resx rename to Kool.EditProject/VSPackage.en.resx diff --git a/Kool.EditProject/VSPackage.tt b/Kool.EditProject/VSPackage.tt new file mode 100644 index 0000000..94416b6 --- /dev/null +++ b/Kool.EditProject/VSPackage.tt @@ -0,0 +1,53 @@ +<#@ template debug="false" hostspecific="true" language="C#" #> +<#@ assembly name="System.Core" #> +<#@ assembly name="System.Windows.Forms" #> +<#@ import namespace="System.IO" #> +<#@ import namespace="System.Resources" #> +<#@ import namespace="System.Text.RegularExpressions" #> +<#@ output extension=".Designer.cs" #> + +<# +const string NameSpace = "Kool.EditProject"; +const string BenchmarkLanguage = "en"; + +var resourceNameWithoutCulture = Path.GetFileNameWithoutExtension(Host.TemplateFile); +var resourceFullNameWithoutCulture = NameSpace + "." + resourceNameWithoutCulture; +#> + +// ------------------------------------------------------------------------------ +// +// This file was generated by T4 Template. +// +// ------------------------------------------------------------------------------ + +using System.Resources; + +namespace <#= NameSpace#> +{ + /// + /// A strongly-typed resource class, for looking up localized strings. + /// + static class <#= resourceNameWithoutCulture#> + { + static readonly ResourceManager Resx = new ResourceManager("<#= resourceFullNameWithoutCulture#>", typeof(<#= resourceNameWithoutCulture#>).Assembly); + +<# +var resx = Path.ChangeExtension(Host.TemplateFile , BenchmarkLanguage + ".resx"); +using(var reader = new ResXResourceReader(resx) { UseResXDataNodes = true }) +{ + foreach (System.Collections.DictionaryEntry kv in reader) + { + var node = (ResXDataNode)kv.Value; + if (node.FileRef == null) + { + var keyName = kv.Key.ToString(); + var propName = Regex.IsMatch(keyName , @"^\d+") ? "_" + keyName : keyName; +#> + public static string <#= propName#> { get; } = Resx.GetString("<#= keyName#>"); +<# + } + } +} +#> + } +} \ No newline at end of file diff --git a/Kool.EditProject/VSPackage.zh-CN.resx b/Kool.EditProject/VSPackage.zh-Hans.resx similarity index 100% rename from Kool.EditProject/VSPackage.zh-CN.resx rename to Kool.EditProject/VSPackage.zh-Hans.resx diff --git a/Kool.EditProject/zh-CN/extension.vsixlangpack b/Kool.EditProject/zh-Hans/extension.vsixlangpack similarity index 100% rename from Kool.EditProject/zh-CN/extension.vsixlangpack rename to Kool.EditProject/zh-Hans/extension.vsixlangpack