C# DLL语言翻译实现
C# DLL language translation implementation
我创建了一个具有功能用途的 DLL,但它内部也有资源,它自己使用这些资源,但需要将其翻译成不同的语言。翻译本身不是问题,而是如何实现这些翻译。
我环顾四周,我能找到的 DLL 翻译实践的两个主要选项是:
- 为每种语言提供不同的 DLL,然后在主项目中为当前的文化使用正确的 DLL。
在 DLL 内部进行翻译,DLL 通过下面的行检测当前区域性(尚未测试该行是否有效),然后它使用自身内部的翻译来提供正确的翻译后的输出。
Assembly.GetExecutingAssembly().AssemblyName.CultureInfo
所以我的问题是,哪种方法是最佳实践(如果有的话!),您是否有关于如何最好地在 DLL 内部进行翻译的建议?
原来很简单:
- 在 DLL 中,添加主资源文件的副本,但带有 ISO 前缀,例如'Resource.de.resx',翻译里面的值文本。
这在子文件夹等中创建了多个 DLL,只需添加对它们的引用,DLL 将自动检测当前 UI 文化,因此使用正确的 resx 和翻译(如果可用)。
感谢@MatthewWatson 的帮助!
我创建了一个具有功能用途的 DLL,但它内部也有资源,它自己使用这些资源,但需要将其翻译成不同的语言。翻译本身不是问题,而是如何实现这些翻译。
我环顾四周,我能找到的 DLL 翻译实践的两个主要选项是:
- 为每种语言提供不同的 DLL,然后在主项目中为当前的文化使用正确的 DLL。
在 DLL 内部进行翻译,DLL 通过下面的行检测当前区域性(尚未测试该行是否有效),然后它使用自身内部的翻译来提供正确的翻译后的输出。
Assembly.GetExecutingAssembly().AssemblyName.CultureInfo
所以我的问题是,哪种方法是最佳实践(如果有的话!),您是否有关于如何最好地在 DLL 内部进行翻译的建议?
原来很简单:
- 在 DLL 中,添加主资源文件的副本,但带有 ISO 前缀,例如'Resource.de.resx',翻译里面的值文本。
这在子文件夹等中创建了多个 DLL,只需添加对它们的引用,DLL 将自动检测当前 UI 文化,因此使用正确的 resx 和翻译(如果可用)。
感谢@MatthewWatson 的帮助!