DNN中的模块本地化

时间:2011-04-29 08:29:57

标签: localization internationalization dotnetnuke dotnetnuke-module

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

是否可以单独包含每个模块的本地化文件?你能想出什么解决方案?

3 个答案:

答案 0 :(得分:4)

由于DotNetNuke,模块的本地化非常简单。

无论您的.ascx(View)文件是什么,App_LocalResources文件夹都应始终在同一级别上。该文件夹中还应该有一个相应的.ascx.resx文件。

view.ascx
App_LocalResources
- view.ascx.resx

在模块中拥有该结构后。 DNN将立即选择文件。

在resx中使用该资源字符串。简单地将ResourceKey属性添加到asp控件的末尾。 e.g。

<asp:Label ID="lblExample" runat="server" ResourceKey="lblExample" />

您的resx文件中应该有lblExample.Text与该标签匹配。请注意,它会自动添加.Text

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

    代码中的
  1. LocalResourceFile属性。它指向什么位置?
  2. 在web.config中设置ShowMissingKeys=true,您将看到缺少哪些资源字符串。

答案 1 :(得分:1)

请找this document。我不确定它是否涵盖了您的问题以及DotNetNuke模块的本地化与其他Asp.Net应用程序的不同之处,但请尝试一下。
如果我可以提出建议,我会在将来添加更多标签(比如C#),它会向更广泛的受众展示,这可能会带来更好的答案。

答案 2 :(得分:0)

只需在与项目中的.ascx视图文件相同的级别创建一个名为“App_LocalResources”的文件夹。对于要进行本地化的每个文件,只需添加一个与视图同名的.resx文件(包括.ascx扩展名)。

Resx名称示例:

“View.ascx.resx”

之后使用localistion非常简单。只需将要从resx文件中提取的控件的资源键属性设置为有意义的名称

示例:

<dnn:Label id="lblName" ResourceKey="lblName" runat="server" />

Resx文件:

“lblName.Text”将分配给标签的Text属性 如果您使用的是dnn,则“lblName.Help”将分配给DNN Tooltip属性:上面的标签

如果您想开始使用DNN标签,只需将此标记放在页面顶部即可。

<%@ Register TagPrefix="dnn" Assembly="DotNetNuke.Web" Namespace="DotNetNuke.Web.UI.WebControls" %>
<%@ Register TagPrefix="dnn" TagName="Label" Src="~/controls/LabelControl.ascx" %>

另一种方便的方法是:

LocalizeString("key")

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

相关问题