当我跑步时perl
,我收到警告:
perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C").
我如何解决它?
为什么在python中执行此操作时会出现以下错误:
>>> import locale
>>> print str( locale.getlocale() )
(None, None)
>>> locale.setlocale(locale.LC_ALL, 'de_DE')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/locale.py", line 531, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
Run Code Online (Sandbox Code Playgroud)
这适用于其他语言环境,如fr或nl.我正在使用Ubuntu 11.04.
更新:执行以下操作不会产生任何结果:
dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = (unset)
are supported and installed on your system.
perl: warning: Falling back to …
Run Code Online (Sandbox Code Playgroud) 如何在Android中获取用户当前的区域设置?
我可以得到默认值,但这可能不是当前的正确吗?
基本上我想要当前语言环境中的双字母语言代码.不是默认的.没有Locale.current()
我的用户可以更改应用内的区域设置(他们可能希望将手机设置保留为英文,但可以用法语,荷兰语或任何其他语言阅读我的应用内容...)
为什么这个在1.5/1.6中完全正常但在2.0中不再是???
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case 201:
Locale locale2 = new Locale("fr");
Locale.setDefault(locale2);
Configuration config2 = new Configuration();
config2.locale = locale2;
getBaseContext().getResources().updateConfiguration(
config2, getBaseContext().getResources().getDisplayMetrics());
// loading data ...
refresh();
// refresh the tabs and their content
refresh_Tab ();
break;
case 201: etc...
Run Code Online (Sandbox Code Playgroud)
问题是,每当用户通过以上代码行时,MENU"缩小"越来越多......
这是缩小的菜单:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 100, 1, "REFRESH").setIcon(android.R.drawable.ic_menu_compass);
SubMenu langMenu = menu.addSubMenu(0, 200, 2, "NL-FR").setIcon(android.R.drawable.ic_menu_rotate);
langMenu.add(1, 201, 0, "Nederlands");
langMenu.add(1, 202, 0, "Français");
menu.add(0, 250, 4, R.string.OptionMenu2).setIcon(android.R.drawable.ic_menu_send);
menu.add(0, 300, …
Run Code Online (Sandbox Code Playgroud) 我正在寻找所有语言环境的列表以及我正在编写的PHP应用程序的短代码.平台之间的数据有很大差异吗?
另外,如果我正在开发一个国际申请,我可以只支持一个版本的英语,还是世界各地的英语存在显着差异?
似乎NSDateFormatter
有一个"功能"意外地咬你:如果你做一个简单的"固定"格式操作,如:
NSDateFormatter* fmt = [[NSDateFormatter alloc] init];
[fmt setDateFormat:@"yyyyMMddHHmmss"];
NSString* dateStr = [fmt stringFromDate:someDate];
[fmt release];
Run Code Online (Sandbox Code Playgroud)
然后它在美国和大多数区域设置工作正常UNTIL ...将手机设置为24小时区域的人将设置中的12/24小时开关设置为12.然后上面开始将"AM"或"PM"添加到结果字符串的结尾.
(参见,例如,NSDateFormatter,我做错了什么或者这是一个错误?)
(请参阅https://developer.apple.com/library/content/qa/qa1480/_index.html)
显然苹果公司宣称这是"不好" - 破碎如设计,他们不会解决它.
规避显然是为特定区域(通常是美国)设置日期格式化程序的区域设置,但这有点乱:
NSLocale *loc = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[df setLocale: loc];
[loc release];
Run Code Online (Sandbox Code Playgroud)
在onsies-twosies中并没有太糟糕,但我正在处理大约十个不同的应用程序,而我看到的第一个应用程序有43个这种情况的实例.
因此,对于宏/重写类/任何最小化改变所有内容的努力的任何聪明的想法,而不使代码模糊?(我的第一直觉是使用在init方法中设置语言环境的版本来覆盖NSDateFormatter.需要更改两行 - alloc/init行和添加的导入.)
这是我到目前为止所提出的 - 似乎适用于所有场景:
@implementation BNSDateFormatter
-(id)init {
static NSLocale* en_US_POSIX = nil;
NSDateFormatter* me = [super init];
if (en_US_POSIX == nil) {
en_US_POSIX = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
}
[me setLocale:en_US_POSIX];
return me;
}
@end …
Run Code Online (Sandbox Code Playgroud) 我的应用程序支持3种(很快4种)语言.由于几个语言环境非常相似,我想让用户选择在我的应用程序中更改语言环境,例如意大利人可能更喜欢西班牙语而不是英语.
有没有办法让用户在可用于应用程序的语言环境中进行选择,然后更改使用的语言环境?我不认为为每个Activity设置语言环境是一个问题,因为它是在基类中执行的简单任务.
我在计算机A(ubuntu 12.04服务器)上使用mongodump创建了一个转储.我将它移动到计算机B(ubuntu 12.04服务器)并输入:
mongorestore -db db_name --drop db_dump_path
它失败了,它报告说:
连接到:127.0.0.1
终止在抛出'std :: runtime_error'的实例后调用
what():locale :: facet :: _ S_create_c_locale name无效
Aborted
我以前成功地完成了这个操作,这种奇怪的行为从未发生过.我需要做些什么来解决这个问题?
是否有一种巧妙的方法从Locale 方法返回的"程序化名称" 中获取Locale实例toString()
?一个明显而丑陋的解决方案是解析String然后根据它构建一个新的Locale实例,但也许有更好的方法/就绪解决方案呢?
需要的是我想在SQL数据库中存储一些特定于语言环境的设置,包括Locales本身,但是将序列化的Locale对象放在那里会很难看.我宁愿存储他们的字符串表示,这似乎相当充分.
我想在我的Linux安装中更改git(到英语)的语言,而不更改其他程序的语言,也无法找到设置.怎么做?
locale ×10
android ×3
bash ×1
git ×1
ios ×1
iphone ×1
java ×1
localization ×1
menu ×1
mongodb ×1
mongodump ×1
mongorestore ×1
objective-c ×1
perl ×1
php ×1
python ×1
ubuntu-11.04 ×1
ubuntu-12.04 ×1
user-defined ×1