.NET 本地化 - Windows 窗体和资源文件

问题描述 投票:0回答:1

我已经开始在我的应用程序中使用本地化和资源文件。我正在使用 Visual Studio 2022 17.11(带有新资源浏览器的版本) 我面临一些问题,这里有一个简短的列表:

  • 每次我添加一种新语言(通过从表单的下拉列表中选择它),所有新资源都会添加到资源资源管理器中,甚至包括位置、大小、名称和其他属性(如 TabIndex 等)。问题是,我只想翻译 Text 或 Label ,而不是控件的整个位置和位置。每次我在设计视图中更改某些内容时,我都必须记住在每种语言中更改其位置/大小/..,这太令人沮丧了。

  • 我在新的资源浏览器中看到很多空的红色字段。有时,当我保存解决方案时,开始弹出一堆错误,因此我必须重新启动 Visual Studio,删除解决方案文件夹中的 .vs 隐藏文件夹并重新创建资源文件。

我想我想改用资源文件以外的更实用的全球化解决方案。我必须在我的应用程序中维护 3 或 4 种语言,这太令人沮丧了。

有什么想法吗? 谢谢!

c# localization multilingual globalization
1个回答
0
投票

有一个名为 i18n.NET 的库,可以轻松处理全球化问题。

安装它,然后只需调用方法

Localize('key')
即可获得翻译后的文本。这是来自他们的 GitHub 存储库的示例。

  static void Main( string[] args )
  {
    int i = 0x555;

    Console.WriteLine( Localize( "Plain string to be translated" ) );
    Console.WriteLine( Localize( $"Interpolated string to be translated with value {i:X4}" ) );
  }

这里是一个 XML 库的示例,其中包含所有翻译:

<?xml version="1.0" encoding="utf-8"?>
<I18N>
  <Entry>
    <Key>Plain string to be translated</Key>
    <Value lang="es">String simple a traducir</Value>
    <Value lang="fr">String simple à traduire</Value>
  </Entry>
  <Entry>
    <Key>Interpolated string to be translated with value {0:d}</Key>
    <Value lang="es">String interpolado a traducir con valor {0:dd/MM/yy}</Value>
    <Value lang="fr">String interpolé à traduire avec valeur {0:d}</Value>
  </Entry>
</I18N>

我使用它并认为它更容易、更简单。

© www.soinside.com 2019 - 2024. All rights reserved.