我对DNN中的本地化过程了解不多。问题是你如何本地化新模块?
是否可以单独包含每个模块的本地化文件?你能想出什么解决方案?
答案 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
。
如果没有显示,有几件事需要检查
LocalResourceFile
属性。它指向什么位置?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")
它将从您的资源文件中提取,在处理电子邮件模板等操作时非常方便。