我对 DNN 中的本地化过程了解不多。问题是如何本地化新模块?
是否可以分别在每个模块中包含本地化文件?你能想出什么解决方案?
我对 DNN 中的本地化过程了解不多。问题是如何本地化新模块?
是否可以分别在每个模块中包含本地化文件?你能想出什么解决方案?
多亏了 DotNetNuke,模块的本地化非常容易。
无论您的 .ascx(视图)文件在哪里,App_LocalResources 文件夹都应始终伴随它,位于同一级别。该文件夹中还应该有一个相应的 .ascx.resx 文件。
view.ascx
App_LocalResources
- view.ascx.resx
一旦你的模块中有这个结构。DNN 将立即提取文件。
在 resx 中使用该资源字符串。简单地将 ResourceKey 属性附加到您的 asp 控件的末尾。例如
<asp:Label ID="lblExample" runat="server" ResourceKey="lblExample" />
您的 resx 文件中应该有一个lblExample.Text
与该标签匹配的文件。请注意,它会.Text
自动添加到其中。
如果没有显示,有几件事需要检查
LocalResourceFile
代码中的属性。它指向什么位置?ShowMissingKeys=true
,您会看到缺少哪些资源字符串。请找到这份文件。我不确定它是否涵盖了您的问题以及本地化 DotNetNuke 模块与其他 Asp.Net 应用程序有何不同,但请尝试一下。
如果我可以提出一些建议,我将来会添加更多标签(例如 C#),它将对更广泛的受众可见,这可能会产生更好的答案。
只需在与项目中的 .ascx 视图文件相同的级别上创建一个名为“App_LocalResources”的文件夹。对于要本地化的每个文件,只需添加一个与视图同名的 .resx 文件(包括 .ascx 扩展名)。
Resx 名称示例:
“查看.ascx.resx”
之后使用本地化真的很容易。只需将要从 resx 文件中提取的任何控件的 Resource Key 属性设置为有意义的名称
例子:
<dnn:Label id="lblName" ResourceKey="lblName" runat="server" />
Resx 文件:
“lblName.Text”将分配给标签的 Text 属性 “lblName.Help”将分配给 DNN 工具提示属性,如果您使用 dnn:Labels 像上面一样
如果您想开始使用 DNN 标签,只需将此标签放在页面顶部即可。
<%@ Register TagPrefix="dnn" Assembly="DotNetNuke.Web" Namespace="DotNetNuke.Web.UI.WebControls" %>
<%@ Register TagPrefix="dnn" TagName="Label" Src="~/controls/LabelControl.ascx" %>
另一种方便的方法是:
LocalizeString("key")
它将从您的资源文件中提取,并且在处理电子邮件模板等内容时非常方便。