我已经开始在我的应用程序中使用本地化和资源文件。我正在使用 Visual Studio 2022 17.11(带有新资源浏览器的版本) 我面临一些问题,这里有一个简短的列表:
每次我添加一种新语言(通过从表单的下拉列表中选择它),所有新资源都会添加到资源资源管理器中,甚至包括位置、大小、名称和其他属性(如 TabIndex 等)。问题是,我只想翻译 Text 或 Label ,而不是控件的整个位置和位置。每次我在设计视图中更改某些内容时,我都必须记住在每种语言中更改其位置/大小/..,这太令人沮丧了。
我在新的资源浏览器中看到很多空的红色字段。有时,当我保存解决方案时,开始弹出一堆错误,因此我必须重新启动 Visual Studio,删除解决方案文件夹中的 .vs 隐藏文件夹并重新创建资源文件。
我想我想改用资源文件以外的更实用的全球化解决方案。我必须在我的应用程序中维护 3 或 4 种语言,这太令人沮丧了。
有什么想法吗? 谢谢!
有一个名为 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>
我使用它并认为它更容易、更简单。