我以为我最近在SO上看到了回答这个问题,但现在我找不到了.这是我现在使用的代码,用于确定设置是否为24小时时间显示.它适用于我在美国,但我不知道它是否适用于所有语言环境.这是否足够或是否有更好的方法来找出当前的设置?
+(BOOL) use24HourClock
{
BOOL using24HourClock = NO;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale: [NSLocale currentLocale]];
[dateFormatter setDateStyle:kCFDateFormatterNoStyle];
[dateFormatter setTimeStyle:kCFDateFormatterShortStyle];
// get date/time (1Jan2001 0000UTC)
NSDate* midnight = [[NSDate alloc] initWithTimeIntervalSinceReferenceDate:0];
NSString* dateString = [dateFormatter stringFromDate: midnight];
// dateString will either be "15:00" or "16:00" (depending on DST) or
// it will be "4:00 PM" or "3:00 PM" (depending on DST)
using24HourClock = ([dateString length] == 5);
[midnight release];
[dateFormatter release];
return using24HourClock;
}
Run Code Online (Sandbox Code Playgroud) 我的Visual Studio 2005是法语版,安装在法语操作系统上.我在调试或运行时收到的所有异常也都是用法语获得的.
但是,我可以做一些异常消息是英文的吗?对于护目镜,讨论等
我尝试了以下方法:
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
throw new NullReferenceException();
Run Code Online (Sandbox Code Playgroud)
获得
你调用的对象是空的.
这当然很酷......但是,当我在法国项目上工作时,我不会硬编码强制Thread.CurrentUICulture为英文.我希望英语更改仅在我的本地计算机上,并且不要更改项目属性.
是否可以在不修改应用程序代码的情况下设置异常语言?
在VS 2008中,将工具 - >选项 - >环境 - >国际设置 - >语言设置为"英语"wnd抛出相同的异常获取ex message en French,但是: alt text http://lh4.ggpht.com/ _1TPOP7DzY1E/S1V62xcvHAI/AAAAAAAAC7o/ckLDVFPKh5Y/S800/exception.png
我正在读日期字符串,可能有或没有时区调整:yyyyMMddHHmmssz或yyyyMMddHHmmss.当一个字符串缺少一个区域时,我将其视为GMT.我没有看到任何方式在a中创建可选部分SimpleDateFormat,但也许我错过了一些东西.有没有办法用a做这个SimpleDateFormat,或者我应该写一个新的具体DateFormat来处理这个?
我刚开始看看IOS Apps在XCode 5中的本地化,我试图添加一个意大利语本地化:

Xcode 5自动生成带有单个条目的Main.strings文件,这是我在Main.storyboard文件中放置的唯一标签:
/* Class = "IBUILabel"; text = "Label"; ObjectID = "PeT-4z-NSf"; */
"PeT-4z-NSf.text" = "Etichetta";
Run Code Online (Sandbox Code Playgroud)

如果我稍后修改Main.storyboard文件向视图中添加一个新按钮,那么如果可能的话,我应该如何告诉Xcode 5将缺少的本地化字符串添加到Main.strings文件中?我应该通过查看Interface Builder中的对象ID字段手动添加新条目(它可以工作,但我不知道这是否是更新故事板本地化的意义)?我可以在Main.storyboard文件上运行类似genstrings的东西来提取所有标签的文本并将新的文本添加到本地化的Main.strings文件中吗?
有没有办法设置在应用程序不支持设备UI语言时使用的默认语言?
示例:我的应用已本地化为英语和德语:
// en.lproj:
"POWER_TO_THE_PEOPLE_BTN" = "Power";
"POWER_PLUG_BTN" = "Power";
// de.lproj:
"POWER_TO_THE_PEOPLE_BTN" = "Macht";
"POWER_PLUG_BTN" = "Spannung";
Run Code Online (Sandbox Code Playgroud)
现在,如果我在设置为Italian应用程序的UI语言的设备上运行应用程序将使用键字符串POWER_TO_THE_PEOPLE_BTN和POWER_PLUG_BTN.
必须有一种方法来指定应用程序在这种情况下使用的默认(回退)语言.
从上面的例子中可以清楚地看出,使用英文字符串作为键是行不通的.
我现在看到的唯一选择是使用NSLocalizedStringWithDefaultValue而不是NSLocalizedString.
在xcode4中,(我使用v4.0.1直到现在并且昨天下载了v4.0.2.)我制作了Localizable.string文件并编译了我的项目.(如您所知,我的源代码使用NSLocalizedString宏函数.)
但我的项目不使用Localizable.string文件进行编译.如果我将此文件中的所有代码更改为注释(如此 - > //),我的项目将完全编译.
结果,问题是Localizable.string文件.我在Google上搜索过它,我发现UTF-8文件(Localizable.string)更改为UTF-16.虽然我试过这个......这种方式也没有用.
在这一刻,许多人都在尝试使用Localizable.string文件.但他们可能会解决我不能做的这个问题.因为没有关于这个问题的问题那么多.
================================================== =============
在Localizable.string文件中,
"LOCAL_APP_GRADE"="基本"
"LOCAL_APP_LAST_UPDATED_DATE"="2011/04/20"
"LOCAL_MAIN_MENU_TITLE"="主菜单"
在我的源代码中,
NSLocalizedString( @"LOCAL_MAIN_MENU_TITLE", @"" );
Run Code Online (Sandbox Code Playgroud)
错误信息,
复制.strings文件错误验证失败:无法读取数据,因为它已损坏.
我想从django视图发送JSON本地化日期
普通文本翻译
ugettext
没关系
以下代码视图无效:
translation.activate("ru")
print datetime.now().strtime("%B")
Run Code Online (Sandbox Code Playgroud)
输出是"八月",而不是" Август "
我读到了关于python的"locale"模块,但它被命名为线程不安全
如何强制strftime使用django的语言环境?
我目前正在使用.resx文件来管理.NET的服务器端资源.
我正在处理的应用程序还允许开发人员将JavaScript插入各种事件处理程序以进行客户端验证等.对我来说,本地化我的JavaScript消息和字符串的最佳方法是什么?
理想情况下,我想将字符串存储在.resx文件中,以使其与其他本地化资源保持一致.
我愿意接受建议.
是否可以在应用程序中拥有多个具有单独本地化的组件?
例如,我想在我的应用程序中本地化字符串,但也使用本地化的ShareKit(因此我的包将在不同位置包含2个Localizable.strings).所以,ShareKit包含像en.lproj和de.lproj这样的文件夹,它们包含Localizable.strings文件,我想为我的项目的其余部分创建相同的文件但是将它们分开.
我试过让它们分开,这导致我的应用程序的字符串没有被使用.有任何想法吗?
我有使用特殊验证的属性,其中我使用message子句显示仅用于该验证的特殊消息.这是一个例子:
validates :email, presence: true, length: { maximum: 60 },
format: { with: valid_email_regex, message: "is not a valid email address format." },
uniqueness: { case_sensitive: false }
Run Code Online (Sandbox Code Playgroud)
我想在这里翻译消息,但我不知道该怎么做.
我看过他们输入类似这样的例子:message:t("some_value_here").我不确定这个名称.我试过这样的消息:t(:bad_email).我在我的yaml文件中做了以下尝试.
activemodel:
errors:
bad_email: "is not a valid email address format."
Run Code Online (Sandbox Code Playgroud)
当我尝试访问我的Rails应用程序时,我收到以下错误:
ActionView::Template::Error (undefined method `t' for #<Class:0x007fefc1b709e0>)
Run Code Online (Sandbox Code Playgroud)
我也在我的yaml文件中尝试过这个:
activemodel:
errors:
user:
bad_email: "is not a valid email address format."
Run Code Online (Sandbox Code Playgroud)
我一整天都在研究这个问题.我能找到的就是替换内置的错误哈希,如空白或空.有没有办法让我有自定义错误哈希并在模型中替换它们?在这一点上,我不能让t以编码方式工作.我希望问题是我如何设置我的yaml文件.我已经看到了如何设置它的不同版本.我不确定我是否应将其放在activemodel或activerecord下.我假设activemodel,因为那是我要翻译的自定义消息.
任何帮助,将不胜感激.这是我在启动应用程序的第一次翻译之前需要弄清楚的最后一部分.
更新日期7/29/2013 7:30 pm CDT
bgates给了我一个非常好的开始,如何设置我的模型文件以接收YAML文件中的自定义消息.但是我最终必须在我的yaml文件中进行以下设置才能找到自定义消息.
activerecord:
errors:
models:
user:
attributes:
bio:
no_links: "cannot contain email addresses or website …Run Code Online (Sandbox Code Playgroud) error-handling message localization ruby-on-rails internationalization
localization ×10
iphone ×3
.net ×2
datetime ×2
ios ×2
cocoa-touch ×1
django ×1
ios7 ×1
java ×1
javascript ×1
message ×1
python ×1
resx ×1
uistoryboard ×1
xcode4 ×1
xcode5 ×1