程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用支持本地化的语言键构建 C# 应用程序大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用支持本地化的语言键构建 C# 应用程序?

开发过程中遇到使用支持本地化的语言键构建 C# 应用程序的问题如何解决?下面主要结合日常开发的经验,给出你关于使用支持本地化的语言键构建 C# 应用程序的解决方法建议,希望对你解决使用支持本地化的语言键构建 C# 应用程序有所启发或帮助;

简介

我正在寻找更多定制的解决方案来翻译我的应用。我将在获得条目后使用 Humanizersmart.Format 。问题是首先要定义获取它们的密钥。

要求

要求是:

  1. 语言键必须在代码中定义,最好靠近使用它们的地方
  2. 语言键必须包含默认英语值
  3. 在构建应用套件后,必须列出所有语言键(XML、CSV、JsON 等)
  4. 必须从外部源(如 JsON 文件)提供语言条目,无需任何类型的重新编译
  5. 应用程序可能包含多个可执行文件、共享库等。所有这些都采用 C# 应用程序的形式

废弃的解决方案

首先,我丢弃的东西:

  • 内置C# resources.dll;他们违反了(1)和(4)
  • 带有密钥的外部文件。违反 (1)

我处理问题的想法

现在,我对解决方案的想法看起来是这样(并且受到 C++ GetText 的启发)

有一个包含键的模板类:

private sealed class Module1Keys : LocalizationKeys<Module1Keys>
{
    public static Readonly LocalizationKey HelloWorld = defineKey("/foo","Hello World!");
    public static Readonly LocalizationKey HelloWorld2 = defineKey("/bar","Hello World2!");
}

类 LocalizationKeys 包含一个静态方法,该方法将实际注册简单集合中的键

public abstract class LocalizationKeys<T> where T : LocalizationKeys<T>
{
    protected static LocalizationKey defineKey(String path,String english)
    {
        var ret = new LocalizationKey(typeof(T),path,english);
        // Following registers localization key in runtime:
        Localization.Instance.RegisterLocalizableKey(ret);

        return ret;
    }
}

问题

在这种方法中剩下的唯一事情是在构建期间列出可本地化的键...这是我遇到的问题 >.在运行时列出它们很容易,但是我无法构建时运行代码(特别是它可能被构建为共享库)。

也许我想太多了,有更好、更干净的解决方案 - 我不需要坚持使用这个解决方案,但谷歌搜索并没有产生更好的结果......

解决方法

搞定了。在 @H_519_7@mvn package cd target java -jar ./JSF-springboot-demo-0.0.1-SNAPSHOT.jar 次中,我们不得不求助于手动解析代码。

...但是现在,有了 CSharp,我们就有了 Roslyn 和 CodeAnalysis API。

解决方案

连接自定义控制台构建工具,其中包括 GetText NuGet 并具有如下代码:

@H_519_7@microsoft.CodeAnalysis

将此控制台工具编译为可执行文件并将其添加为构建后步骤。利润。

大佬总结

以上是大佬教程为你收集整理的使用支持本地化的语言键构建 C# 应用程序全部内容,希望文章能够帮你解决使用支持本地化的语言键构建 C# 应用程序所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。