5

我对 DNN 中的本地化过程了解不多。问题是如何本地化新模块?

是否可以分别在每个模块中包含本地化文件?你能想出什么解决方案?

4

3 回答 3

4

多亏了 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自动添加到其中。

如果没有显示,有几件事需要检查

  1. LocalResourceFile代码中的属性。它指向什么位置?
  2. 在 web.config 中设置ShowMissingKeys=true,您会看到缺少哪些资源字符串。
于 2011-07-04T05:13:26.093 回答
1

请找到这份文件。我不确定它是否涵盖了您的问题以及本地化 DotNetNuke 模块与其他 Asp.Net 应用程序有何不同,但请尝试一下。
如果我可以提出一些建议,我将来会添加更多标签(例如 C#),它将对更广泛的受众可见,这可能会产生更好的答案。

于 2011-04-29T11:11:47.277 回答
0

只需在与项目中的 .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")

它将从您的资源文件中提取,并且在处理电子邮件模板等内容时非常方便。

于 2014-11-17T10:11:41.307 回答