没有不值得去解决的问题,也没有不值得去学习的技术!

在 Laravel 6、Module 中的本地化文件从 php 转换为 json (由于 Module 不支持,决定放弃)

发现翻译未正常工作

1、现在翻译字符串都存放在 resources/lang 目录下的文件里。在此目录中,但凡应用支持的每种语言都应该有一个对应的子目录:


/resources
    /lang
        /en
            validation.php
        /en-US
            validation.php


2、之前的调用方法:return trans(‘online_store_theme_graphql::validation.custom.theme_editor_session.theme_editor_session_id_exists_rule’);

3、计划翻译文件以 JSON 格式存储在 resources/lang 目录中


/resources
    /lang
        /en
            validation.php
        /en-US
            validation.php
		en.json
		en-US.json


3、特意将 /en/validation.php 与 en.json 进行区分,以确认优先级的顺序。确认 .php 的优先级高于 .json。如图1

特意将 /en/validation.php 与 en.json 进行区分,以确认优先级的顺序。确认 .php 的优先级高于 .json
图1
<?php
 
return [
    'custom' => [
        'theme_editor_session' => [
            'theme_editor_session_id_exists_rule' => 'The selected :attribute is invalid.',
        ],
    ],
 
    'attributes' => [],
];

{
  "validation.custom.theme_editor_session.theme_editor_session_id_exists_rule": "The selected :attribute is invalid1."
}


4、删除掉 php 相关的目录与文件


/resources
    /lang
		en.json
		en-US.json


5、发现翻译未正常工作。如图2

发现翻译未正常工作
图2

6、使用 App Facade 的 getLocale 和 isLocale 方法确定当前的区域设置


        echo App::getLocale();
        exit;



{
  "error": {},
  "text": "en"
}


7、参考 How to use json translation files using modules? (Translation Strings As Keys):https://github.com/nWidart/laravel-modules/issues/954 。调整服务提供者中的 registerTranslations(),删除掉对于 PHP 文件的引用,采用对于 JSON 文件的引用。


    /**
     * Register translations.
     *
     * @return void
     */
    public function registerTranslations()
    {
        $langPath = resource_path('lang/modules/' . $this->moduleNameLower);

        if (is_dir($langPath)) {
            $this->loadTranslationsFrom($langPath, $this->moduleNameLower);
            $this->loadJsonTranslationsFrom($langPath);
        } else {
            $this->loadTranslationsFrom(__DIR__ . '/../Resources/lang', $this->moduleNameLower);
            $this->loadJsonTranslationsFrom(__DIR__ . '/../Resources/lang');
        }
    }



    /**
     * Register translations.
     *
     * @return void
     */
    public function registerTranslations()
    {
        $langPath = resource_path('lang/modules/' . $this->moduleNameLower);

        if (is_dir($langPath)) {
            $this->loadJsonTranslationsFrom($langPath);
        } else {
            $this->loadJsonTranslationsFrom(__DIR__ . '/../Resources/lang');
        }
    }


8、翻译仍然不能够正常工作。最终决定暂且放弃此实现。

PHP / Laravel / Yii2 老项目维护与长期技术支持

如果你的 PHP / Laravel / Yii2 项目已经上线,但遇到原开发离职、Bug 长期无人修复、接口不稳定、性能下降、代码难以接手等问题,可以联系我做一次远程技术排查。

适合以下情况:
✅ 老旧 PHP 系统无人维护
✅ Laravel / Yii2 项目 Bug 修复
✅ 后台管理系统小功能迭代
✅ RESTful API 接口排查
✅ MySQL / Redis / Nginx 性能问题
✅ 长期远程兼职维护

可先从一次小问题开始:
✅ 线上报错排查
✅ 接口异常分析
✅ 慢查询与性能瓶颈定位
✅ 代码结构初步评估
✅ 部署环境与日志检查

如需咨询,请联系我,并注明:PHP 维护咨询

联系方式:
Telegram:@shuijingwan
微信:13980074657
邮箱:shuijingwanwq@gmail.com

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理