标签: setlocale

如何根据区域设置格式化日期?

在模板中,我显示特定日期的日期和月份:

<div class="jour"><?php echo date('d',strtotime($content->getCreatedAt())) ?></div>
<div class="mois"><?php echo date('M',strtotime($content->getCreatedAt())) ?></div>
Run Code Online (Sandbox Code Playgroud)

这个工作正常,问题是月份名称是英文的.我在哪里指定我想要另一个语言环境中的月份名称,例如法语?

php locale symfony1 date setlocale

5
推荐指数
1
解决办法
4784
查看次数

即使语言环境在平台中可用,setlocale php 函数也会返回 false

我在一个云平台上工作,服务器是Apache。

在其中一个站点实例中,php 脚本 setlocale(LC_ALL, "en_GB.utf8"); 总是返回 false。

当我执行 locale -a 时,可以在平台中找到此语言环境“en_GB.utf8”。还注意到,setlocale(LC_ALL, 0); 返回“C”。

这里 PHP/Apache 似乎不知道底层平台区域设置。有人能建议我万一可能出什么问题吗?

php apache setlocale

5
推荐指数
1
解决办法
3134
查看次数

Mac OS X中的setlocale不起作用

我正在研究跨平台的C ++应用程序。它是多语言的,必须以usera语言显示所有消息。为了检测语言环境,我正在使用setlocale(LC_ALL,“”)调用。它返回当前的语言和国家/地区,例如我的情况是“ ru_RU.UTF-8”。

当我从终端启动应用程序时,一切都可以在MacOS 10.9.1中正常工作。当我从Finder运行我的应用程序时,setlocale总是返回默认语言环境(“ C”)。我怀疑这是因为Finder未设置LANG环境变量。

在C ++应用程序中的MacOS X下检测用户语言环境的正确方法是什么?

c++ macos locale setlocale

5
推荐指数
1
解决办法
938
查看次数

是否可以在进程中禁用setlocale()?

我们目前面临的问题是,在使用Windows文件打开/保存对话框时加载了一个外部组件(我们遗憾地不知道哪一个),有些系统可能会通过调用来更改进程的语言环境setlocale(LC_ALL, "").

这会混淆我们的应用程序,因为它依赖于所设置的标准语言环境(在运行时期间我们自己的任何组件都不会更改).

因此,我们需要确保setlocale()在进程内调用时从未产生任何影响,或者我们需要在调用此函数时检测,然后将语言环境重置为默认的"C"语言环境.

有没有办法实现这些目标?

c++ setlocale

5
推荐指数
1
解决办法
390
查看次数

在 Laravel 中为日期配置荷兰语格式

在我的 Laravel 应用程序中,我想以荷兰语格式显示日期。在我的 config/app.php 文件中,我设置了时区和语言环境:

'timezone' => 'Europe/Amsterdam',
'locale' => 'nl',
Run Code Online (Sandbox Code Playgroud)

但是如果我在我的刀片文件中打印一个日期,如下所示:

strftime('%a %e %b', strtotime($day->date))
Run Code Online (Sandbox Code Playgroud)

它仍然没有以荷兰语格式显示。当我在相关控制器的构造函数中调用 setlocale() 方法时,它会起作用。

setlocale(LC_TIME, 'NL_nl');
Run Code Online (Sandbox Code Playgroud)

如何全局设置或在我的配置中定义它?

php date setlocale laravel-5.1

5
推荐指数
1
解决办法
6325
查看次数

将LC_MESSAGES的setlocale()设置为不存在的语言环境失败

对于嵌入式软件项目,我添加了对翻译的支持,并且由于我们正在运行嵌入式Linux,因此我选择使用libc gettext()。我们没有安装任何语言环境定义,因此我仅尝试将LC_MESSAGES语言环境设置为所需的语言环境:

setlocale(LC_MESSAGES, "fake");
Run Code Online (Sandbox Code Playgroud)

(在使用正确的翻译之前,我正在使用名称fakefake.mo文件进行伪翻译)。

静态链接时此方法工作正常,它返回一个语言环境句柄,bindtextdomain()并且所有朋友都可以正常工作,而我从中获得了“翻译”字符串:

setlocale() returned "fake"
current textdomain is "ewe"
current base directory is "/opt/btech/probe/share/locale/WA"
current LC_MESSAGES locale is "fake"
gettext("Error") ==> "?????"
Run Code Online (Sandbox Code Playgroud)

现在,当我动态编译它时,它不起作用。既不在目标设备上,也不在本地PC上(文件安装方式相同)。该setlocale()调用失败,返回一个NULL指针,并设置errno为ENOENT(找不到文件)。到目前为止,setlocale()我还没有指出bindtextdomain()文件的位置,但是切换调用无济于事。

我做错事了吗,我的工作示例是错误的,真的不应该工作吗?我是否需要语言环境什么我打电话的定义setlocale()上,即使是LC_MESSAGES

这是测试二进制文件的来源:

#include <libintl.h>
#include <locale.h>
#include <stdio.h>

int main()
{
    const char *l = setlocale(LC_MESSAGES, "fake");

    printf("setlocale() returned \"%s\"\n", l);

    bind_textdomain_codeset("ewe", "UTF-8");
    bindtextdomain("ewe", "/opt/btech/probe/share/locale/WA");
    textdomain("ewe");

    printf("current textdomain is \"%s\"\n", …
Run Code Online (Sandbox Code Playgroud)

c localization glibc setlocale

5
推荐指数
1
解决办法
507
查看次数

为什么std :: locale(“”)。name()在clang和gcc上给出不同的结果?

在我的计算机(MacOS 10.14.x)上编译并运行以下代码会导致在clang ++上打印空字符串,并在g ++上引发运行时错误。为什么?

#include <locale>
#include <iostream>


int main()
{
  std::cout << "User-preferred locale setting is " <<
    std::locale("").name().c_str() << '\n';

  return 0;
}
Run Code Online (Sandbox Code Playgroud)
$ clang++ locale.cc
$ ./a.out 
User-preferred locale setting is 


$ g++-mp-8 locale.cc 
$ ./a.out 
terminate called after throwing an instance of 'std::runtime_error'
  what():  locale::facet::_S_create_c_locale name not valid
User-preferred locale setting is Abort trap: 6

$ clang++ --version
clang version 7.0.1 (tags/RELEASE_701/final)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /opt/local/libexec/llvm-7.0/bin

$ g++-mp-8 --version
g++-mp-8 (MacPorts gcc8 8.3.0_0) …
Run Code Online (Sandbox Code Playgroud)

c++ locale g++ setlocale clang++

5
推荐指数
1
解决办法
118
查看次数

在运行时动态更改 Angular 7 中的区域设置,而无需重新加载应用程序

我正在尝试在运行时更改我的 angular 应用程序中的 Locale_Id,但必须用于window.location.reload()在语言环境中触发更改。

我想在不重新加载我的应用程序的情况下更改语言环境。

这是我的代码:

应用模块

import { LOCALE_ID } from '@angular/core';
import { LocaleService} from "./services/locale.service";

@NgModule({
    imports: [//imports],
    providers: [
        {provide: LOCALE_ID,
         deps: [LocaleService],
         useFactory: (LocaleService: { locale: string; }) => LocaleService.locale
        }
    ]})
Run Code Online (Sandbox Code Playgroud)

语言环境服务

import { Injectable } from '@angular/core';
import { registerLocaleData } from '@angular/common';
import localeEnglish from '@angular/common/locales/en';
import localeArabic from '@angular/common/locales/ar';

@Injectable({ providedIn: 'root' })
export class LocaleService{

    private _locale: string;

    set locale(value: string) {
        this._locale = value;
    }
    get locale(): …
Run Code Online (Sandbox Code Playgroud)

localization setlocale typescript angular angular7

5
推荐指数
1
解决办法
4095
查看次数

如何在不重新创建 Activity 的情况下更改 Android 应用程序中的语言?

无法在不重新创建活动的情况下更改区域设置
应用程序支持两种语言,当我更改语言时,我必须重新创建活动才能显示所需的结果,但我不想这样做。

private void setNewLocale(AppCompatActivity mContext, @LocaleManager.LocaleDef String language) {
        LocaleManager.setNewLocale(this, language);
        Intent intent = mContext.getIntent();
        startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK));
    }
Run Code Online (Sandbox Code Playgroud)

我还在所有文本字段上再次设置了文本,但没有帮助!

当我处于应用程序的第三个活动时,当我回到第二个活动时,我更改语言,如果我愿意的话,第二个和第一个活动上的文本我也必须重新创建这些活动,我认为这是不好的方法。我只想更改语言,但不想重新创建活动!

单击按钮时,我设置了区域设置!

if(appPreference.getLanguage().equalsIgnoreCase("en")){
   setNewLocale(MainActivity.this, LocaleManager.ARABIC);
}
else
    setNewLocale(MainActivity.this, LocaleManager.ENGLISH);
Run Code Online (Sandbox Code Playgroud)

android locale setlocale

5
推荐指数
1
解决办法
4382
查看次数

Windows中的语言环境列表

在*nix系统上,您可以locale -a获取可用语言环境列表.

Windows中的等效命令(或操作)是什么?

我在Internet上看过列表,但大多数都是区域设置标签,而不是实际的区域设置名称.此外,并非所有系统都保证安装所有系统,对吧?

请注意,我在这里对"locale"的定义是"locale string",即C的第二个参数setlocale(),它将导致非NULL返回值.

程序化答案也很好,我只是厌倦了蛮力猜测Windows语言环境名称.

c windows locale localization setlocale

4
推荐指数
1
解决办法
5657
查看次数