Ubuntu 下使用 Composer 实现国际化的正确路径
一 概念澄清
二 准备环境 安装与启用 intl 及 ICU
php -r "echo INTL_ICU_VERSION;\n"php -m | grep intlsudo apt update
sudo apt install libicu-dev
sudo apt remove php-intl
sudo apt install php-intl
# 如使用 PHP 8.2,可明确安装对应包:sudo apt install php8.2-intl
php -r "echo INTL_ICU_VERSION;\n" # 需不低于依赖要求,如 >= 60.1
composer install
三 在应用中通过 Composer 引入国际化能力
composer require laravel/installer
laravel new my-laravel-app
cd my-laravel-app
安装语言包并配置:composer require spatie/laravel-lang --dev
php artisan vendor:publish --provider="Spatie\Lang\LangServiceProvider"
# 将 config/app.php 的 'locale' 改为 'zh-CN' 等
cp -R vendor/spatie/laravel-lang/src/zh-CN resources/lang/
composer require codezero/laravel-localized-routes
php artisan vendor:publish --provider="CodeZero\LocalizedRoutes\LocalizedRoutesServiceProvider" --tag="config"
# 在 config/localized-routes.php 配置 supported_locales,如 ['en','zh-CN']
# 按文档注册中间件,使 App::getLocale() 随 URL 前缀切换
四 常见报错与处理
INTL_ICU_VERSION 达标。symfony/polyfill-intl-normalizer、symfony/polyfill-intl-grapheme、symfony/polyfill-intl-idn)以替代部分功能(是否生效取决于具体库的支持)。五 实用建议
php:8.2-fpm 基础镜像安装 libicu-dev 并启用 intl),可显著降低环境不一致风险。