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提供的翻译方法获取星期数组:- 先在
app/Providers/AppServiceProvider.php的boot()方法中添加全局配置:
\Carbon\Carbon::setLocale('id');- 调整
dayFromInt方法逻辑,不要调用固定返回英文的getDays(),改用翻译方法获取对应星期:
public static function dayFromInt($num) { $translatedDays = \Carbon\Carbon::getTranslatedDays('id'); return Arr::get($translatedDays, $num); } - 先在
注意:不要直接修改vendor目录下Carbon类的源码,后续升级依赖包会直接覆盖自定义修改,导致功能失效。
内容的提问来源于stack exchange,提问作者Rsan
相关产品推荐
相关产品推荐

