PHPackages                             carlin/laravel-translation-collector - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Localization &amp; i18n](/categories/localization)
4. /
5. carlin/laravel-translation-collector

ActiveLibrary[Localization &amp; i18n](/categories/localization)

carlin/laravel-translation-collector
====================================

Laravel Translation Collector Package - 自动收集项目中的翻译文本并同步到外部翻译系统

v1.0.0(10mo ago)11MITPHPPHP ^8.0

Since Aug 28Pushed 9mo agoCompare

[ Source](https://github.com/carlin-rj/laravel-translation-collector)[ Packagist](https://packagist.org/packages/carlin/laravel-translation-collector)[ RSS](/packages/carlin-laravel-translation-collector/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (8)Versions (2)Used By (0)

Laravel Translation Collector
=============================

[](#laravel-translation-collector)

Laravel 翻译文本自动收集器扩展包，用于自动收集项目中的翻译文本并与外部翻译系统同步。

功能特性
----

[](#功能特性)

- 🔍 **自动扫描**: 自动扫描项目代码中的翻译函数调用
- 🏗️ **模块化支持**: 完美支持 `nwidart/laravel-modules` 模块化架构
- 🌍 **多语言**: 支持多种语言格式 (JSON、PHP)
- 🔄 **双向同步**: 支持与外部翻译系统的双向同步
- 🚀 **初始化翻译**: 一键将本地翻译文件初始化到外部系统
- 📊 **详细报告**: 生成详细的翻译状态报告
- ⚡ **高性能**: 支持批量处理和缓存机制
- 🛠️ **可配置**: 丰富的配置选项

安装
--

[](#安装)

### 1. 安装扩展包

[](#1-安装扩展包)

```
composer require carlin/laravel-translation-collector
```

### 2. 发布配置文件

[](#2-发布配置文件)

```
php artisan vendor:publish --tag=translation-collector-config
```

### 3. 配置环境变量

[](#3-配置环境变量)

在 `.env` 文件中添加以下配置：

```
# 外部翻译API配置
TRANSLATION_API_URL=https://api.translation-system.com
TRANSLATION_API_TOKEN=your_api_token
TRANSLATION_PROJECT_ID=your_project_id

# 可选配置
TRANSLATION_AUTO_SYNC=false
TRANSLATION_BATCH_SIZE=100
TRANSLATION_CACHE_ENABLED=true
TRANSLATION_CACHE_TTL=3600
```

使用方法
----

[](#使用方法)

### 命令行工具

[](#命令行工具)

#### 1. 收集翻译文本

[](#1-收集翻译文本)

```
# 收集所有翻译文本
php artisan translation:collect

# 指定模块收集
php artisan translation:collect --module=User,Order

# 指定路径收集
php artisan translation:collect --path=app/Http,Modules/Admin

# 仅扫描不上传 (dry-run 模式)
php artisan translation:collect --dry-run

# 自动上传到外部系统
php artisan translation:collect --upload

# 输出为表格格式
php artisan translation:collect --format=table

# 保存结果到文件
php artisan translation:collect --output=storage/translations.json
```

#### 2. 同步翻译

[](#2-同步翻译)

```
# 同步外部系统到本地
php artisan translation:sync

# 同步外部系统到本地 合并模式
php artisan translation:sync --merge-mode=merge

# 同步外部系统到本地 覆盖模式
php artisan translation:sync --merge-mode=overwrite

# 预览同步差异
php artisan translation:sync --dry-run
```

#### 3. 初始化翻译

[](#3-初始化翻译)

```
# 将本地翻译文件初始化到外部系统（用于首次集成）
php artisan translation:init

# 指定语言初始化
php artisan translation:init --language=en,zh_CN

# 查看将要初始化的内容（干跑模式）
php artisan translation:init --dry-run

# 强制执行（跳过确认）
php artisan translation:init --force
```

#### 4. 生成报告

[](#4-生成报告)

```
# 生成完整报告
php artisan translation:report

# 生成HTML格式报告
php artisan translation:report --format=html --output=storage/report.html

# 包含统计信息
php artisan translation:report --include-statistics --include-missing --include-unused

# 指定语言报告
php artisan translation:report --language=zh_CN,en
```

### 程序化使用

[](#程序化使用)

#### 使用门面

[](#使用门面)

```
use Carlin\LaravelTranslationCollector\Facades\TranslationCollector;

// 收集翻译
$translations = TranslationCollector::collect();

// 扫描指定模块
$translations = TranslationCollector::scanModules(['User', 'Order']);

// 扫描指定路径
$translations = TranslationCollector::scanPaths(['app/Http', 'Modules/Admin']);

// 获取统计信息
$statistics = TranslationCollector::getStatistics();
```

#### 使用依赖注入

[](#使用依赖注入)

```
use Carlin\LaravelTranslationCollector\Contracts\TranslationCollectorInterface;
use Carlin\LaravelTranslationCollector\Contracts\ExternalApiClientInterface;

class TranslationService
{
    public function __construct(
        private TranslationCollectorInterface $collector,
        private ExternalApiClientInterface $apiClient
    ) {}

    public function collectAndUpload()
    {
        $translations = $this->collector->collect();

        if (!empty($translations)) {
            $result = $this->apiClient->addTranslations($translations);
            return $result;
        }
    }
}
```

配置说明
----

[](#配置说明)

### 扫描配置

[](#扫描配置)

```
// config/translation-collector.php

'scan_paths' => [
    'app/',
    'Modules/',
    'resources/views/',
    'resources/js/',
],

'exclude_paths' => [
    'vendor/',
    'storage/',
    'bootstrap/cache/',
    'public/',
    'node_modules/',
],

'translation_functions' => [
    '__',           // Laravel 标准翻译函数
    'trans',        // Laravel trans函数
    'Lang::get',    // Lang门面调用
    '@lang',        // Blade模板指令
    'trans_choice', // 复数翻译
],
```

### 外部API配置

[](#外部api配置)

```
'external_api' => [
    'base_url' => env('TRANSLATION_API_URL'),
    'token' => env('TRANSLATION_API_TOKEN'),
    'project_id' => env('TRANSLATION_PROJECT_ID'),
    'timeout' => 30,
    'retry_times' => 3,
    'retry_sleep' => 100,

    'endpoints' => [
        'add_translation' => '/api/translations/add',
        'get_translations' => '/api/translations/get_translations',
        'sync_translations' => '/api/translations/sync',
        'init_translations' => '/api/translations/init',
    ],
],
```

### 模块化支持

[](#模块化支持)

```
'modules_support' => [
    'enabled' => true,
    'modules_path' => base_path('Modules'),
    'scan_module_paths' => [
        'Http/',
        'Resources/views/',
        'Console/',
        'Services/',
    ],
],
```

支持的翻译函数
-------

[](#支持的翻译函数)

扩展包能够识别以下翻译函数调用：

### PHP 文件

[](#php-文件)

- `__('key')`
- `trans('key')`
- `Lang::get('key')`
- `trans_choice('key', count)`

### Blade 模板

[](#blade-模板)

- `@lang('key')`
- `{{ __('key') }}`
- `{{ trans('key') }}`

输出格式
----

[](#输出格式)

### JSON 格式

[](#json-格式)

```
[
    {
        "key": "user.login.success",
        "default_text": "Login successful",
        "source_file": "/path/to/file.php",
        "line_number": 45,
        "context": "return response()->json(['message' => __('user.login.success')]);",
        "module": "User",
        "file_type": "php",
        "created_at": "2025-08-27T10:00:00Z"
    }
]
```

### 报告格式

[](#报告格式)

```
{
    "summary": {
        "total_collected_keys": 150,
        "total_local_translations": 450,
        "supported_languages": ["en", "zh_CN", "zh_HK"]
    },
    "language_coverage": {
        "zh_CN": {
            "language_name": "简体中文",
            "coverage_percent": 85.5,
            "status": "good"
        }
    }
}
```

错误处理
----

[](#错误处理)

扩展包提供了详细的错误处理和日志记录：

```
try {
    $translations = TranslationCollector::collect();
} catch (\Carlin\LaravelTranslationCollector\Exceptions\TranslationCollectorException $e) {
    // 处理收集错误
    Log::error('翻译收集失败', ['error' => $e->getMessage()]);
} catch (\Carlin\LaravelTranslationCollector\Exceptions\ExternalApiException $e) {
    // 处理API错误
    Log::error('外部API调用失败', ['error' => $e->getMessage()]);
}
```

性能优化
----

[](#性能优化)

- **缓存机制**: 自动缓存扫描结果
- **增量扫描**: 只扫描变更的文件
- **批量处理**: 支持批量上传到外部系统

贡献指南
----

[](#贡献指南)

欢迎提交 Issue 和 Pull Request 来改进这个扩展包。

许可证
---

[](#许可证)

MIT License

###  Health Score

27

—

LowBetter than 47% of packages

Maintenance55

Moderate activity, may be stable

Popularity3

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

311d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/545110c66db1405c084c9e1de3e2f4e12b4857b4ebf06b8074c3510a150fb826?d=identicon)[mckue](/maintainers/mckue)

---

Tags

laravellocalizationi18ntranslationcollector

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/carlin-laravel-translation-collector/health.svg)

```
[![Health](https://phpackages.com/badges/carlin-laravel-translation-collector/health.svg)](https://phpackages.com/packages/carlin-laravel-translation-collector)
```

###  Alternatives

[spatie/laravel-health

Monitor the health of a Laravel application

87512.0M167](/packages/spatie-laravel-health)[erag/laravel-lang-sync-inertia

A powerful Laravel package for syncing and managing language translations across backend and Inertia.js (Vue/React/Svelte) frontends, offering effortless localization, auto-sync features, and smooth multi-language support for modern Laravel applications.

4925.3k](/packages/erag-laravel-lang-sync-inertia)[spatie/laravel-export

Create a static site bundle from a Laravel app

674146.0k6](/packages/spatie-laravel-export)[vemcogroup/laravel-translation

Translation package for Laravel to scan for localisations and up/download to poeditor

136327.1k3](/packages/vemcogroup-laravel-translation)[tio/laravel

Add this package to localize your Laravel application (PHP, JSON or GetText).

170341.2k](/packages/tio-laravel)[api-platform/laravel

API Platform support for Laravel

58171.8k14](/packages/api-platform-laravel)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
