如何在php中用法语硬编码月份名称?

Posted

技术标签:

【中文标题】如何在php中用法语硬编码月份名称?【英文标题】:How to hardcode month names in french in php? 【发布时间】:2019-03-14 14:36:19 【问题描述】:

我正在编写下面的 php/javascript 代码,它以法语返回月份名称,但它与我们使用的法语单词不匹配。

<script>
document.getElementById('title_fr').value = "<?php setlocale(LC_TIME, "frc"); echo strftime("%d %b %Y", strtotime( $this_date )); ?>"; 
</script>

上面的脚本返回法语月份名称,这与我们的法语月份名称集不匹配。

mars
avr.
mai
juin
juil.
août
sept.
oct. 
nov.
déc.

以下是我们遵循的法语月份名称集:

janvier
février
mars
avril
mai
juin
juillet
août
septembre
octobre
novembre
décembre

问题陈述:

我想知道我需要在上面的脚本中进行哪些更改,以便它返回我正在关注的法语月份名称。

我相信我需要创建一个如下所示的数组,其中包含法语月份名称。

const monthNamesFr = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"];

【问题讨论】:

所以在(你的)法国,一年只有十个月,这很有趣:-) 根据strftime 上的手册,您可以使用%B 而不是%b 来获取完整的月份名称(基于区域设置)。这样能解决问题吗? 不,有 12 个月。我忘了输入一月/二月。 使用date 仅获取日期的月份部分,然后将其用作访问月份名称数组的索引。将其与您需要在之前或之后输出的其余日期部分连接起来。 @JNevill 成功了,感谢您的帮助。您认为我需要在setlocale(LC_TIME, "frc"); echo strftime("%d %b %Y", strtotime( $this_date )); 此处进行任何更改吗? 【参考方案1】:

因为这似乎可以解决问题(来自 cmets 部分)。无需将日期硬编码到数组中,只需从 strftime() 函数请求整月:

 setlocale(LC_TIME, "frc"); echo strftime("%d %B %Y", strtotime( $this_date ));

【讨论】:

成功了。我面临的另一个问题是它的 décembre 和 février,它的回归 d�cembre 和 f�vrier【参考方案2】:

我建议在法国使用有效的语言环境,例如 fr_FR 来表示法语。此外,使用%B 作为strftime() documentation 的完整月份名称。

$this_date = '2018-04-03 12:12:12';
setlocale(LC_TIME, "fr_FR");
echo strftime('%d %B %Y', strtotime($this_date)); // 03 avril 2019

无论系统配置的语言环境如何,这都有效。

【讨论】:

成功了。我面临的另一个问题是它的 décembre 和 février,它的回归 d�cembre 和 f�vrier 这可能是字符编码问题。如果您将 UTF-8 与其他一些编码(如 iso-8859-1

以上是关于如何在php中用法语硬编码月份名称?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 2.0 中翻译我的硬编码字符串? [复制]

如何读取具有动态名称的文件,同时避免在 R 中进行硬编码?

如何在触发器中循环所有列名称而不对其进行硬编码

如何在 PHP 中没有硬编码密钥的情况下进行对称加密

在 SQL 中为给定年份设置硬编码的日期和月份

Xamarin.Forms:如何避免在 MVVM 绑定中硬编码字符串