下午的人!
我正在尝试在我的Compact Framework(移动)应用程序上实现一个县列表.
我可以使用CultureInfo.GetCultures(.. etc)在完整的.Net框架中轻松完成此操作.但是,CF似乎缺少这个功能?
有什么方法可以返回我可以填充到ComboBox中的国家/地区列表(如果可能的话,还有地区)?
操作系统有一个国家列表,所以必须有办法吗?
我期待着回复!
我想动态设置Number文本块的文化格式,其中包含传递给MyUserControl的文化和数字值.MyCulture和Number值将传递给MyCustomControl,其格式为"en-GB","en-US"等.
我在asp.NET MVC中使用扩展方法做了类似的事情,但需要帮助如何在WPF中将它拼凑在一起.
示例MVC扩展方法
public static MvcHtmlString CulturedAmount(this decimal value,
string format, string locale)
{
if (string.IsNullOrEmpty(locale))
locale = HttpContext.Current.Request.UserLanguages[0];
return MvcHtmlString.Create(value.ToString(format,
CultureInfo.CreateSpecificCulture(locale)));
}
Run Code Online (Sandbox Code Playgroud)
窗口
//MyMoney is a decimal, MyCulture is a string (e.g. "en-US")
<MyCustomControl Number="{Binding MyMoney}" Culture="{Binding MyCulture}"
Text="Some Text" />
Run Code Online (Sandbox Code Playgroud)
MyCustomControl
<StackPanel>
<TextBlock Text="{Binding Number, ElementName=BoxPanelElement,
StringFormat={}{0:C}}" /> //display this with specific culture
<TextBlock Text="{Binding Text, ElementName=BoxPanelElement}" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud) 根据维基百科(并在Dario Solera的回答中证实),在意大利,他们使用冒号格式化时间:
24小时表示法以书写形式使用冒号作为分隔符.示例:14:05.会议记录以两位数字写成; 小时数可以写入或不带前导零.
但是,运行以下代码似乎输出点:
using System.Globalization;
Thread.CurrentThread.CurrentCulture = new CultureInfo("it-IT");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("it-IT");
// Outputs "11.08"
Console.WriteLine(DateTime.Now.ToShortTimeString());
// Outputs "."
Console.WriteLine(new CultureInfo("it-IT").DateTimeFormat.TimeSeparator);
Run Code Online (Sandbox Code Playgroud)
这是一个框架错误吗?什么是"修复"它的最佳方法?TimeSeparator
是可设置的 - 我们应该在分配之前覆盖它Thread.CurrentThread.CurrentCulture
吗?
我尝试将字符串转换为datetime
但每次我得到:
字符串未被识别为有效的DateTime.
代码是:
string format = "dd/MM/yyyy";
obj.TransDate = DateTime.ParseExact(lbl_TransDate.Text.Split('/')[0] + "/" + lbl_TransDate.Text.Split('/')[1] + "/" + lbl_TransDate.Text.Split('/')[2], format, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
当我调试我尝试解析它的日期时: 12/4/2012
我正在使用两种语言的多语种网站开始使用阿拉伯语和英语
我已经在IE中以及在FireFox上将语言设置为阿拉伯语(ar-ae)但它总是让我获得英语版本我无法解决此问题
网站结构
Default.aspx
en/Default.aspx
ar/Default.aspx
Run Code Online (Sandbox Code Playgroud)
问题是当我使用URL http://localhost:49831/site/Defualt.aspx
然后它工作正常并且ar/Default.aspx
如果选择阿拉伯语作为语言则将我重定向到阿拉伯语版本.
但是当使用URL时,http://localhost:49831/site/
它总是将我重定向到英文版 en/Default.aspx
我不确定我做错了什么.
我仅使用Default.aspx来检测默认的浏览器语言,然后相应地重定向
Default.aspx.cs文件的CODE
// Localization and Globalization code
protected override void InitializeCulture()
{
String lang = Request["Language"];
Session["lang"] = Helper.DetectLanguage(lang);
//Set Direction of page LTR/RTL
if (Session["lang"] == "ar-AE")
{
Session["PageDIR"] = "rtl";
}
else
{
Session["PageDIR"] = "ltr";
}
base.InitializeCulture();
}
public static String DetectLanguage(String lang)
{
String LangCode = lang;
if (!string.IsNullOrEmpty(lang))
{
lang = lang.ToLower();
}
String Lang2Char;
CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentUICulture; …
Run Code Online (Sandbox Code Playgroud) 例如,文本框中的输入字符串为10.00美元.我打电话
decimal result;
var a = decimal.TryParse(text, NumberStyles.AllowCurrencySymbol, cultureInfo, out result);
Run Code Online (Sandbox Code Playgroud)
cultureInfo
是已知的(en-US
).为什么decimal.tryParse
返回错误?
谢谢.
我想知道,为德国文化测试正确数字格式的正则表达式会是什么样子.
在德语中,逗号用作十进制标记,点用于分隔数千.
因此:
在我看来,真正的诀窍是确保可能有几个点,可选地后跟逗号分隔符
我不知道中性文化如何映射到特定文化。像下面一样是静态的吗?
en = en-US
fr = fr-FR
pt = pt-BR
Run Code Online (Sandbox Code Playgroud)
和nativeInitCultureData来自https://github.com/dotnet/coreclr/blob/master/src/classlibnative/nls/nlsinfo.cpp
但我听不懂 有人可以帮忙吗?
ReSharper希望改变这个:
platypusID = DuckbillValues[i - 1].ToString();
Run Code Online (Sandbox Code Playgroud)
..到这个:
platypusID = DuckbillValues[i - 1].ToString(CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
由于我的应用程序仅在美国使用的机会很大,我将默认以下哪项:
1) Smart
2) Dumb
3) Neither smart nor dumb
4) Smart, but not for that reason
5) Dumb, but not for that reason
Run Code Online (Sandbox Code Playgroud) 检查以下代码段,
namespace TestDateConvertion
{
class Program
{
static void Main(string[] args)
{
DateTime testValue = new DateTime(2013, 12, 15, 15, 33, 44);
CultureInfo culture = new CultureInfo("ar-SA");
string stringValue = string.Format(culture, "{0:d} {0:HH:mm:ss}", testValue);
Console.WriteLine(stringValue);
Console.ReadLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)
它给出了输出
22/02/35 15:33:44
我不知道这是怎么可能的.什么是那里的35输出
cultureinfo ×10
c# ×9
.net ×3
asp.net ×2
datetime ×2
localization ×2
currency ×1
decimal ×1
formatting ×1
regex ×1
resharper ×1
string ×1
winforms ×1
wpf ×1