我已将 Action Filer 中的文化设置为
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
Run Code Online (Sandbox Code Playgroud)
其中文化 = {fr-be} => 法国比利时。
仅供参考,此操作过滤器设置了用户选择的文化。
其中一个 myAction 用户正在以 [dd/mm/yyyy] => 26/7/2011 格式输入日期。动作如下
public ActionResult RequestVacation(VacationRequest model)
{
if(ModelState.IsValid)
{
Run Code Online (Sandbox Code Playgroud)
....
当我对代码模型进行调试时。VacationDate 包含 01/01/0001 ;虽然它应该是 7/26/2011 而 Form[VacationDate] 包含 26/07/2011 [这是在 Fr-BE 甲酸盐] 并且 ModelState.IsValid 是假的;虽然它应该是真的,因为日期在 fr-be 格式中是正确的。当我继续挖掘但在视觉工作室检查当地人时,我发现
this.ModelState[1].Culture = {en-US}
Run Code Online (Sandbox Code Playgroud)
而我已经使用 actionFilter 设置了文化值,如上所述。我的问题是如何设置 this.ModelState.Culture = {fr-be}?
我们的业务要求规定,用户应该能够在不更改浏览器或系统设置的情况下更改他们的语言首选项。我们的实现是一个简单的界面,要求他们选择一种语言。最初,我只是将他们的选择存储在 cookie 值中并检查它并设置 UI 文化,但我想知道是否有更简单的方法。
目前,我正在尝试查看是否可以接受他们的选择,然后在响应中设置接受语言,以便在后续请求中使用。现在,我在响应中设置了接受语言标头,但下一个请求会用浏览器值覆盖它(例如 en-US,en;q=0.8")这可能吗,我该怎么做?还有其他想法吗?实现这个功能也很受欢迎。
我有一个用 C# 编写的控制台应用程序,它使用 DateTime.Now。将 Windows 区域设置为“英语(美国)”,短日期输出为 M/d/yyyy。我有一个在机器上运行的应用程序实例,其文化格式设置为“英语(加拿大)”,短日期格式设置为 dd/MM/yyyy。由于我希望跨不同服务器的应用程序保持一致性,因此我将 Windows 区域设置中的短日期格式更改为 M/d/yyyy。但是,我的应用程序仍将 DateTime.Now 输出为 dd/MM/yyyy。我的应用程序是否需要更改其他内容才能以我指定的格式输出?
我在很多地方都这样做,但这里有一个例子:
TimeZoneInfo customTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime thisTime = TimeZoneInfo.ConvertTime(DateTime.Now, customTimeZone);
//The below output is not formatted how the Windows Region short date is specified.
Console.Writeline(thisTime);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我的 DateTime 没有按照其在 Windows 区域设置中指定的方式进行格式化。
我正在使用 Xamarin 编写一个移动应用程序,我有一个名为 Strings 的静态类,用于包装我的 RESX 资源。我想使用 x:Static 绑定到我的 XAML 文件中的这些。如果我有一个要绑定到的静态属性的静态类,这将起作用。
我删掉了一些评论和其他非必要的部分,但它基本上是这样的:
namespace MyCompany.Resources
{
public static partial class Strings
{
public static string LabelUsername { get { return Resources.LabelUsername; } }
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的 XAML 中,我像这样绑定到它:
<Entry Placeholder="{x:Static resources:Strings.LabelUsername}"
其中资源定义为
xmlns:resources="clr-namespace:MyCompany.Resources;assembly=MyCompany"
这一切正常。当我向字符串添加嵌套类时,它会崩溃。这个类看起来像这样:
namespace MyCompany.Resources
{
public static partial class Strings
{
public static partial class Label
{
public static string Username { get { return Resources.Label_Username; } }
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我这样做,那么我会像这样在我的 XAML 中绑定到它:
<Entry Placeholder="{x:Static resources:Strings.Label.Username}"
Run Code Online (Sandbox Code Playgroud)
注意在“resources:”之后我们现在有三个级别(Strings.Label.Username)。这似乎是失败的原因。当我这样做时,我收到编译错误: Type …
我正在尝试将我的 ASP.NET Core 2.0 Web 应用程序全球化并本地化为西班牙语。我正在尝试遵循文档,但这些文档似乎并不适用于 Core 2.0,因为它们似乎没有涵盖 Razor Pages。仅控制器和视图。然而,无论我更改请求标头中的区域性还是使用文档中所示的查询字符串,本地化都不起作用。对我做错了什么有任何见解吗?
http://localhost:26417/?culture=es&ui-culture=es
Run Code Online (Sandbox Code Playgroud)
启动.cs
public void ConfigureServices( IServiceCollection services )
{
services.AddDbContext<PartDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("PartDatabase"))
);
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddLocalization(options => options.ResourcesPath = "Localization");
services.AddMvc()
.AddRazorPagesOptions(options => {
//options.Conventions.AllowAnonymousToPage("/Index");
// I can just use [AllowAnonymous] attribute
})
.AddViewLocalization()
.AddDataAnnotationsLocalization();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure( IApplicationBuilder app, IHostingEnvironment env )
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
var …Run Code Online (Sandbox Code Playgroud) 我需要将格式化的数字转换为 JS 默认数字格式。
这是我的代码:
String.prototype.toJsFloatFormat = function() {
debugger;
var newVal = this;
return newVal;
}
//Example of use
var input = 10000.22; //default js format
var formatted = input.toLocaleString("es"); // result is: 10.000,22
var unformatted = formatted.toJsFloatFormat(); //expected result = 10000.22;
Run Code Online (Sandbox Code Playgroud)
问题是当我需要获取格式化数字 (10.000,22) 并使用此格式化数字 (parseFloat(10.000,22) + 1000) 进行操作时,我得到了不好的结果 ( parseFloat(10.000,22) + 1000 = 1010)
提前致谢。
我在C#(VS2010)中遇到类型转换问题.
我需要在我的数据库中插入一些行,但C#中的十进制数字类型如下所示: 1,34.
在sql字符串中它看起来:"-------- 1,34---------",但我需要这个字符串看起来像:"-------- 1.34------ - ".
我怎样才能更换" , " ,以" . ".
感谢.
我目前正在研究包含多语言数据的.net 4.5应用程序.
我是新手,所以我正在寻找解释诸如不同语言编码,全球化,本地化等概念的资源.
关于我应该在哪里寻找这些信息的任何提示?
我只是在寻找这两种方法产生不同结果的任何例子.首先,我访问msdn页面,并通过微小的更改运行代码
using System;
using System.Globalization;
using System.Linq;
class Program
{
static void Main()
{
string[] words = { "Tuesday", "Sal?", "???????", "Mardi",
"?????", "Martes", "??? ?????",
"????????", "?????????" };
Console.BufferHeight = 1000;
var test = CultureInfo.GetCultures(CultureTypes.AllCultures)
.Select(ci =>
{
string[] wordsToLower = words.Select(x => x.ToLower(ci)).ToArray();
string[] wordsToLowerInvariant = words.Select(x => x.ToLowerInvariant()).ToArray();
return new
{
Culture = ci,
ToLowerDiffers = !wordsToLower.SequenceEqual(wordsToLowerInvariant)
};
})
.ToArray();
foreach (var x in test)
{
Console.WriteLine("Culture {0}, ToLower and ToLowerInvariant produces different results: {1}", …Run Code Online (Sandbox Code Playgroud) 我有一个包含几个泰语字符的字符串。此字符串使用 unicode 字符。但是我在 IDE 中看不到泰语字符,即使我在文本文件中写了字符串。如果我想正确地看到泰文字符,我必须编写以下代码
var text = "M_M-150 150CC. เดี่ยว (2 For 18 Save 2)";
var ascii = Encoding.Default.GetBytes(text);
text = Encoding.UTF8.GetString(ascii);
Run Code Online (Sandbox Code Playgroud)
应用上述逻辑后,我可以正确地看到带有泰语字符的字符串。这是输出
// notice the thai character ?????? in the string
M_M-150 150CC. ?????? (2 For 18 Save 2)
我不确定为什么我需要应用上述逻辑来查看泰语字符,即使字符串是 Unicode?在这种情况下,Encoding.Default 到底在做什么?
globalization ×11
c# ×6
localization ×3
.net ×2
asp.net-mvc ×1
cultureinfo ×1
datetime ×1
ip ×1
javascript ×1
jquery ×1
multilingual ×1
razor-pages ×1
resources ×1
sql ×1
thai ×1
validation ×1
xamarin ×1
xaml ×1