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

Laravel中使用Carbon时如何翻译getDays()返回的星期名称

Carbon类getDays()返回结果翻译为印尼语的实现方法

Carbon::getDays()本身是硬编码返回英文星期数组的静态方法,不支持直接切换语言,不需要修改Carbon底层代码,在你现有的app/Support/Date.php文件中调整逻辑即可,有两种常用实现方案:

  • 方案1:自定义印尼语星期映射(最稳定,推荐)
    该方案完全不依赖框架语言包、Carbon locale配置,不会因为后续配置变动导致显示异常,数组下标和getDays()原生返回顺序完全对齐:0对应周日,1对应周一,依次到6对应周六。
    修改后的代码如下:
public static function dayFromInt($num)
{
    $indonesianDays = [
        0 => 'Minggu',
        1 => 'Senin',
        2 => 'Selasa',
        3 => 'Rabu',
        4 => 'Kamis',
        5 => 'Jumat',
        6 => 'Sabtu'
    ];
    return Arr::get($indonesianDays, $num);
}
  • 方案2:使用Carbon内置本地化能力
    如果你项目中其他时间相关文案也需要统一使用印尼语,可以先全局设置Carbon的语言为印尼语,再调用Carbon提供的翻译方法获取星期数组:
    1. 先在app/Providers/AppServiceProvider.php的boot()方法中添加全局配置:
    \Carbon\Carbon::setLocale('id');
    
    1. 调整dayFromInt方法逻辑,不要调用固定返回英文的getDays(),改用翻译方法获取对应星期:
    public static function dayFromInt($num)
    {
        $translatedDays = \Carbon\Carbon::getTranslatedDays('id');
        return Arr::get($translatedDays, $num);
    }
    

注意:不要直接修改vendor目录下Carbon类的源码,后续升级依赖包会直接覆盖自定义修改,导致功能失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 21:51:44