You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP开发Google Assistant Webhook:如何将月份改为意大利语

解决Google Assistant Fulfillment中PHP月份显示意大利语的问题

我来帮你搞定这个问题!你遇到的核心卡点是PHP的date()函数完全不遵循setlocale()设置的区域规则——它不管你怎么配置locale,始终输出英文的日期格式。要让月份显示成意大利语,你需要做这几个调整:

1. 替换date()为strftime()

strftime()是PHP里真正受locale控制的日期格式化函数,它会根据你设置的区域规则输出对应语言的日期文本。把你代码里的这一行:

$oggi = date( "d F", strtotime($giorno) );

改成:

$oggi = strftime( "%d %B", strtotime($giorno) );

注意这里的格式符是%d(两位日期)和%B(完整月份名称),和date()的格式符不一样,别搞混了。

2. 确保服务器安装了意大利语locale包

有时候setlocale()不生效,是因为服务器上根本没有安装对应的意大利语区域包。你可以通过SSH登录服务器,执行locale -a命令,看看输出里有没有it_IT.utf8或者it_IT:

  • 如果是Debian/Ubuntu系统,安装命令是:sudo apt-get install language-pack-it
  • 如果是CentOS/RHEL系统,安装命令是:sudo yum install glibc-langpack-it

3. 增强setlocale的生效稳定性

有些环境下直接调用setlocale()可能因为环境变量问题不生效,你可以先设置环境变量再调用:

putenv('LC_TIME=it_IT.utf8');
setlocale(LC_TIME, 'it_IT.utf8', 'ita');

修改后的完整代码

header( 'Access-Control-Allow-Headers: *' );
header( 'Access-Control-Allow-Origin: *' );
header( "Access-Control-Allow-Credentials: true" );
header( 'Content-Type: application/json' );
$postdata = file_get_contents( "php://input" );
$input = json_decode( $postdata, true );

// 先设置环境变量再调用setlocale
putenv('LC_TIME=it_IT.utf8');
setlocale (LC_TIME, 'it_IT.utf8','ita');

$intent = $input[ 'queryResult' ][ 'intent' ][ 'displayName' ];
$giorno = $input[ 'queryResult' ][ 'parameters' ][ 'giorno' ];
$guest = $input[ 'queryResult' ][ 'parameters' ][ 'guest' ];
$telefono = $input[ 'queryResult' ][ 'parameters' ][ 'telefono' ];
$tempo = $input[ 'queryResult' ][ 'parameters' ][ 'time' ][ 0 ];
$nome = $input[ 'queryResult' ][ 'parameters' ][ 'nome' ];

// 用strftime替换date
$oggi = strftime( "%d %B", strtotime($giorno) );

echo "{ 'fulfillmentText': 'Grazie " . $nome . ", ti confermo la tua prenotazione per ".$guest." persone alle ore " . substr( $tempo, -14, 5 ) . " del giorno " . $oggi . ".', 'fulfillmentMessages': [ {'text': {'text': ['Grazie " . $nome . ", ti confermo la tua prenotazione per ".$guest." persone alle ore " . substr( $tempo, -14, 5 ) . " del giorno " . $oggi . ".'] }}], 'source':'webhook' }";

这样修改之后,Google Assistant返回的月份就应该是意大利语的了。如果还是不行,先检查服务器的locale包有没有安装到位,这是最常见的坑。

内容的提问来源于stack exchange,提问作者DigitalXP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 03:53:42