1

我有一个用我的母语 (hun) 用 Visual Studio 2012 用 c# 编写的大项目。

我想把它翻译成英文。

当然,如果我得到一个匈牙利语文本,我可以翻译它,所以重点不是如何翻译文本,而是如何使整个翻译更容易。我不需要软件在运行时更改语言,如果我得到一个使用不同语言的不同项目也可以。一种方法是检查整个项目并更改所有标签,但这是很多工作,而且因为我修改了整个项目,所以我必须重新做一遍。

我编写了另一个程序,它在项目文件(如“Form1.cs”等)中找到标有“...”的标签,我可以翻译这些。这有很多错误。例如 Visual Studio 拆分长文本,所以我将这些字符串分开,所以在整个翻译之后仍然需要做很多工作。

另一个想法是用数组的东西替换所有的字符串,比如不写"Cancel",写t[201]或类似的东西,然后我可以只翻译 t 变量。但这也是很多工作,如果我在文本中包含一个变量,就会出现问题。

例如,在匈牙利语中,我可能会写'2 masodperc maradt',但我应该将其翻译为'Remaining seconds: 2'或类似的东西。然后我必须注意包含的变量。

那么您认为最简单的方法是进行翻译,其他程序员是如何做到的呢?

例如,TotalCommander 会在一秒钟内更改语言,而无需重新启动或进行任何操作。

4

1 回答 1

3

.Net 中有一个使用 resx 文件的内置方式。

有很多工具可以帮助基于 .Net 本地化进行翻译,但您也可以直接在 VS 中进行翻译。

能够动态更改翻译的.Net 应用程序通常使用定制的国际化,例如加载文本文件和刷新GUI。

如果您想自己做类似的事情,请注意您还必须调整控件的大小以使文本适合。

对于#count text text 和 text text #count 的问题,您可以使用 string.Format 之类的。

  1. 将 resx 文件添加到您的项目中,例如 Localized.resx
  2. 添加具有值 {0} 文本文本的字符串属性“CountText”。
  3. 添加第二个 resx Localized.en.resx
  4. 添加带有值文本文本 {0} 的字符串属性“CountText”。到 Localized.en.resx
  5. 将进度写入 GUI 的位置使用 string.Format(Localized.CountText, myCount);
  6. 如第一个链接所示切换程序语言。
  7. .Net 自动加载一种语言的相应资源。

要了解所有可能性,尤其是使用 VS 进行翻译,您真的应该阅读 MSDN 库文章。如果你错过了什么,翻译会变得很麻烦。

于 2013-06-18T13:53:12.210 回答