我正在尝试在ASP.NET Web窗体应用程序(.NET 4.0)中使用资源文件。我正在使用VS2012。我在App_GlobalResources
文件夹中有以下文件:
Address.resx
(默认语言,英语)Address.ja-JP.resx
(日文)问题是当我尝试在ASP.NET页面(* .aspx文件)中显示日语文本时。如果我使用以下语法,一切正常:
<%= Resources.Address.Street1 %>
但是当我尝试将它绑定到asp:Label
控件的属性时,将显示默认文本(英语)而不是日语:
<asp:Label ID="lblStreet1" runat="server" Text='<%$ Resources:Address,Street1 %>'></asp:Label>
BTW文化正在会话变量中设置,然后在母版页中我有这样的东西:
Thread.CurrentThread.CurrentCulture = (CultureInfo) Session["ci"];
Thread.CurrentThread.CurrentUICulture = (CultureInfo) Session["uci"];
另外,我不知道这是否相关,但我在Visual Studio外部生成Address.ja-JP.resx
(使用Notepad ++),然后将文件移动到App_GlobalResources
文件夹并将文件包含在解决方案。
我在这里错过了什么吗?
答案 0 :(得分:1)
我能够找到解决问题的方法。在后面的代码中,我必须覆盖InitializeCulture方法,我做了类似的事情:
protected override void InitializeCulture()
{
Thread.CurrentThread.CurrentCulture = (CultureInfo) Session["ci"];
Thread.CurrentThread.CurrentUICulture = (CultureInfo) Session["uci"];
base.InitializeCulture();
}
答案 1 :(得分:0)
我建议您在标签控件上使用meta:resourcekey。在您的情况下,您可以使用:
import Cocoa
import XCPlayground
class MyView: NSView {
override init(frame: NSRect) {
super.init(frame: frame)
wantsLayer = true //if commented change centerX & centerY accordingly
layerContentsRedrawPolicy = .OnSetNeedsDisplay
layer!.backgroundColor = CGColorCreateGenericRGB(0.0, 0.0, 0.0, 0.5)
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
}
let containerView: NSView = NSView(frame: CGRectMake(0, 0, 150, 165))
let myView: MyView = MyView(frame: containerView.frame)
let label: NSTextField = NSTextField(frame: NSRect(x: 0.0, y: 0.0, width: 100, height: 22))
label.stringValue = "Please wait..."
label.drawsBackground = false
label.bordered = false
label.selectable = false
label.textColor = NSColor.whiteColor()
//containerView.addSubview(myView)
containerView.addSubview(myView)
containerView.addSubview(label, positioned: .Above, relativeTo: myView)
XCPShowView("view", containerView)
您的resx文件中的资源键将如下所示:
<asp:Label ID="lblStreet1" runat="server" meta:resourcekey="myStreet1Label"></asp:Label>