作为一名PHP开发者,尤其是在构建面向全球用户的Laravel应用时,多语言支持(国际化I18n)是不可避免的需求。曾几何时,我被手动提取、管理和更新应用程序中的所有可翻译字符串所困扰。这不仅繁琐且容易出错,更是在项目迭代中成为一个巨大的维护负担。我渴望一种更智能、更自动化的方式来解决这个问题。
我的Laravel应用需要支持多种语言,这意味着我必须将所有用户界面上的文本(例如
__('Welcome')
@lang('Dashboard')
lang/en.json
lang/es.json
然而,随着项目功能的不断增加,新的视图、新的控制器、新的邮件模板层出不穷,其中包含了大量的可翻译文本。我很快就陷入了以下困境:
__('')
@lang('')
lang/*.json
sprintf('Dear customer, your order has been %s', $orderStatus)
这些问题让我感到非常头疼,我意识到传统的“人肉”管理方式已经无法满足项目的需求,我需要一个强大的工具来将我从这场多语言管理的噩梦中解救出来。
kkomelin/laravel-translatable-string-exporter
幸好,在PHP的生态系统中,我们有Composer这个强大的包管理器,它让引入第三方库变得前所未有的简单。正是通过Composer,我发现了
kkomelin/laravel-translatable-string-exporter
kkomelin/laravel-translatable-string-exporter
__('')
@lang('')
安装这个包非常简单,因为它主要用于开发环境,所以我们将其作为开发依赖安装:
<pre class="brush:php;toolbar:false">composer require kkomelin/laravel-translatable-string-exporter --dev
安装完成后,你可能需要发布其配置文件,以便根据自己的需求进行更细致的配置(例如,指定扫描的目录、排除的目录等):
<pre class="brush:php;toolbar:false">php artisan vendor:publish --provider="KKomelin\TranslatableStringExporter\Providers\ExporterServiceProvider"
现在,我们来看看它是如何解决我之前遇到的那些痛点的。
这是这个包最核心的功能。告别手动复制粘贴,现在只需一条命令:
<pre class="brush:php;toolbar:false">php artisan translatable:export es,de,fr
这条命令会:
__('')
@lang('')
es.json
de.json
fr.json
lang/
例如,运行后你的
lang/es.json
<pre class="brush:php;toolbar:false">{ "Welcome": "Bienvenido", "Dashboard": "Panel de control", "New Feature": "Nueva característica" }
这彻底解决了字符串遗漏和手动维护的难题,每次代码更新后,只需运行一次命令,所有新的可翻译字符串就会自动进入翻译文件,等待翻译人员处理。
我曾经最大的困扰之一就是不知道哪些字符串还没有被翻译。现在,
inspect-translations
<pre class="brush:php;toolbar:false">php artisan translatable:inspect-translations fr
这条命令会检查
lang/fr.json
你甚至可以结合导出功能:
<pre class="brush:php;toolbar:false">php artisan translatable:inspect-translations fr --export-first
这会先导出所有字符串到
fr.json
此外,这个包还提供了一个小技巧:在IDE(如PhpStorm或VSCode)中,你可以使用正则表达式
"([^"]*)": "\1"
对于那些像
sprintf('Dear customer, your order has been %s', $orderStatus)
lang/*.json
kkomelin/laravel-translatable-string-exporter
persistent-strings.json
lang/
persistent-strings.json
<pre class="brush:php;toolbar:false">[ "Dear customer, your order has been approved", "Dear customer, your order has been paid", "Dear customer, your order has been cancelled" ]
这样,每次运行
translatable:export
自从引入
kkomelin/laravel-translatable-string-exporter
如果你也正在为Laravel应用的多语言管理而烦恼,我强烈推荐你尝试
kkomelin/laravel-translatable-string-exporter
以上就是告别Laravel多语言手动噩梦:kkomelin/laravel-translatable-string-exporter助你自动化翻译管理的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号