不久前,我们在后端设置页面使用翻译并以客户的语言登录时遇到了类似的问题。
由于我们已经习惯于使用和实现与 POEdit 软件一起使用的 .po 翻译库,因此我们选择了这种方式。
我们的属性大多已经有自定义属性,称为 DisplayName",我们用来在用户控件上显示标题。我们将这些属性更改为 TranslatableDisplayName 属性,并对其中的 .toString() 方法进行公共覆盖,返回名为“translationKey”,在属性构造函数中设置。
然后,我们将搜索模式“TranslatableDisplayName:1”添加到 .po 翻译文件中,从而使用我们所有的英文显示名称并将其列为 po 文件中的翻译键。只需发送这些 PO 将其英语单词/句子翻译成特定语言,您就可以开始了。结果超级简单和有用。
属性示例:
public class TranslatableDisplayName: Attribute
{
private string translationKey = string.Empty;
public TranslatableDisplayName(string translationKey)
{
this.translationKey = translationKey;
}
public override string toString()
{
return Languages.getString(translationKey);
}
}
在我们的例子中, Languages 是一个gnugettext 翻译 c# 库,但可以是处理属性返回的任何方式。如果需要,只需调用您的数据库查询。但是,您需要将其作为静态方法,除非您在创建软件时通过静态属性的属性或方法提供它,但在您第一次需要它之前。希望这可以帮助。