gpt4 book ai didi

internationalization - Yii - 使用 i18n 和 CJuiDatePicker

转载 作者:行者123 更新时间:2023-12-04 05:40:34 27 4
gpt4 key购买 nike

我正在尝试制作一个国际化的 Yii 应用程序。

我有一个行为,可以将日期与用户选择的语言环境日期格式相互转换,以便一切顺利。

当我尝试从语言环境设置中为 CJuiDatepicker 设置语言和日期格式时,我最终得到了中文月份名称(无论我选择哪种语言环境格式)和美国格式的日期。

CJuiDatePicker 想要的日期和语言格式与 Yii 提供的格式不匹配 - 我如何使选择器工作?

最佳答案

jQuery 和 Yii 的问题在于它们不都使用相同的语言环境名称。例如,Yii 具有诸如 en 之类的语言环境名称。和 en_gb而 jQuery 没有 en语言环境并称为“英语(英国)”语言环境 en-GB (破折号而不是下划线)。

还有一个问题是 Yii 和 jQuery 的日期格式说明符不同。

要连接这两个世界,您必须编写一些手动代码;这是我在过去的项目中使用的我自己的代码的摘录:

class LocaleExtensions {
private static $yiiTojQueryFormatConversion = array(
'yyyy' => 'yy',
'yy' => 'y',
'MMMM' => 'MM',
'MMM' => 'M',
'MM' => 'mm',
'M' => 'm',
);

private static $yiiTojQueryLanguageConversion = array(
'en' => 'en-GB',
);

public static function getJQueryDateFormat($width='medium') {
return strtr(Yii::app()->getLocale()->getDateFormat($width),
self::$yiiTojQueryFormatConversion);
}

public static function getJQueryLanguageFromYii($language = null) {
if ($language == null) {
$language = Yii::app()->getLanguage();
}

if (isset(self::$yiiTojQueryLanguageConversion[$language])) {
return self::$yiiTojQueryLanguageConversion[$language];
}

return $language;
}
}

要解决区域设置问题,您可以将 Yii 的小部件子类化以在合适的时间执行此操作(或仅手动执行此操作):
$this->language = LocaleExtensions::getJQueryLanguageFromYii($this->language);

您还可以从 Yii 设置中检索与 jQuery 兼容的日期格式,并在 Javascript 代码中使用它,如下所示:
var format = <?php echo json_encode(LocaleExtensions::getJQueryDateFormat('long'));?>
var locale = <?php echo json_encode(LocaleExtensions::getJQueryLanguageFromYii());?>
var now = new Date();
alert($.datepicker.formatDate(format, now, $.datepicker.regional[locale]));

关于internationalization - Yii - 使用 i18n 和 CJuiDatePicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11308353/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com