PHPackages                             snow/translation - 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. snow/translation

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

snow/translation
================

translate field，将字段变更翻译成相应文案

v1.0.2(3y ago)15PHPPHP &gt;=7.4

Since Aug 9Pushed 3y ago1 watchersCompare

[ Source](https://github.com/zhaoyang1214/translation)[ Packagist](https://packagist.org/packages/snow/translation)[ RSS](/packages/snow-translation/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (1)Versions (5)Used By (0)

这是一个将数组字段及值映射为相应文本的类
====================

[](#这是一个将数组字段及值映射为相应文本的类)

特性
--

[](#特性)

- 支持多维数组
- 支持新旧数据变更翻译
- 配置简单且多样
- 支持json数据
- 支持扩展

安装
--

[](#安装)

#### 使用composer安装

[](#使用composer安装)

```
composer require snow/translation

```

一、使用
----

[](#一使用)

1、简单使用

```
use Snow\Translation\Translation;

$configs = [
    'name' => '公告名称'
];
$data = [
    'name' => '我是一个方案'
];
$tpl = '【:attribute】值为“:value”';
$tran = new Translation($configs, $tpl);
$tran->translate($data);
echo $tran; // 【方案名称】值为“我是一个方案”
echo $tran->getTranslateString(); // 【方案名称】值为“我是一个方案”
```

2、支持值映射

```
use Snow\Translation\Translation;

$configs = [
    'type' => [
        'text' => '公告类型',
        'value' => [1 => '资讯类', 2 => '公告类', 3 => '广告类']
    ],
];
$data = [
    'type' => 3
];
$tpl = '【:attribute】值为“:value”';
$tran = new Translation($configs, $tpl);
$tran->translate($data);
echo $tran->getTranslateString(); // 【公告类型】值为“广告类”
```

3、支持关联字段映射,解决字段复用问题

```
use Snow\Translation\Translation;

$configs = [
    'type' => [
        'text' => '公告类型',
        'value' => [1 => '资讯类', 2 => '公告类', 3 => '广告类']
    ],
    'extra.jump_type' => [
        'text' => '跳转类型',
        'value' => ['webview' => '网页类', 'download' => '下载类', 'deeplink' => '拉起应用类', 'noclick' => '不可点击']
    ],
    'extra.url' => [
        'relevance' => [
            'type' => [
                1 => '链接',
                2 => '链接',
                3 => [
                    'relevance' => [
                        'extra.jump_type' => [
                            'webview' => '广告链接',
                            'download' => '广告链接',
                            'deeplink' => '备用链接',
                        ]
                    ]
                ],
            ],
        ],
    ],
];
$data = [
    'type' => 3,
//    'extra' => '{"title":"标题111", "jump_type":"deeplink", "img":"图片地址", "deeplink":"deeplink://", "url":"http://www.baidu.com"}', // 支持json
    'extra' => json_decode('{"title":"标题111", "jump_type":"deeplink", "img":"图片地址", "deeplink":"deeplink://", "url":"http://www.baidu.com"}', true),
];
$tpl = '【:attribute】值为“:value”';
$tran = new Translation($configs, $tpl);
$tran->translate($data);
echo $tran->getTranslateString(); // 【公告类型】值为“广告类”;【跳转类型】值为“拉起应用类”;【备用链接】值为“http://www.baidu.com”
```

4、值映射支持callback

```
use Snow\Translation\Translation;

$configs = [
    'plan_id' => [
        'text' => '方案名称',
        'value' => function ($value, $attribute, $translation) {
            if (empty($value)) {
                return null;
            }
            // 查询
            $res = [
                [
                    'id' => 1,
                    'plan_name' => '公告1',
                ],
                [
                    'id' => 2,
                    'plan_name' => '公告2',
                ]
            ];
            $arr = array_column($res, 'plan_name', 'id');
            return $arr[$value];
        }
    ],
];
$data = [
    'plan_id' => 1
];
$tpl = '【:attribute】值为“:value”';
$tran = new Translation($configs, $tpl);
$tran->translate($data);
echo $tran->getTranslateString(); // 【方案名称】值为“公告1”
```

5、支持新旧数据变更翻译

```
use Snow\Translation\Translation;

$configs = [
    'name' => '公告名称',
    'type' => [
        'text' => '公告类型',
        'value' => [1 => '资讯类', 2 => '公告类', 3 => '广告类']
    ],
    'extra.title' => '标题',
    'extra.img' => '图片',
    'extra.deeplink' => 'deeplink',
    'extra.jump_type' => [
        'text' => '跳转类型',
        'value' => ['webview' => '网页类', 'download' => '下载类', 'deeplink' => '拉起应用类', 'noclick' => '不可点击']
    ],
    'extra.url' => [
        'relevance' => [
            'type' => [
                1 => '链接',
                2 => '链接',
                3 => [
                    'relevance' => [
                        'extra.jump_type' => [
                            'webview' => '广告链接',
                            'download' => '广告链接',
                            'deeplink' => '备用链接',
                        ]
                    ]
                ],
            ],
        ],
    ],
];
$data = [
    'name' => '方案内容',
    'type' => 3,
    'extra' => '{"title":"标题111", "jump_type":"deeplink", "img":"图片地址", "deeplink":"deeplink://", "url":"http://www.baidu.com"}',
];
$oldData = [
    'name' => '方案内容2',
    'type' => 2,
    'extra' => '{"title":"标题222", "img":"图片222://", "url":"http://www.baidu2222.com"}',
];

$tpl = '【:attribute】值由“:oldValue”改为“:value”';
$tran = new Translation($configs, $tpl);
$tran->translate($data, $oldData);
echo $tran->getTranslateString(); // 【公告名称】值由“方案内容2”改为“方案内容”;【公告类型】值由“公告类”改为“广告类”;【标题】值由“标题222”改为“标题111”;【图片】值由“图片222://”改为“图片地址”;【deeplink】值由“”改为“deeplink://”;【跳转类型】值由“”改为“拉起应用类”;【备用链接】值由“”改为“http://www.baidu.com”
```

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity58

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

Every ~222 days

Total

4

Last Release

1437d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/22496108?v=4)[赵阳](/maintainers/zhaoyang1214)[@zhaoyang1214](https://github.com/zhaoyang1214)

---

Tags

translatetranslate field

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/snow-translation/health.svg)

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

###  Alternatives

[stichoza/google-translate-php

Free Google Translate API PHP Package

2.0k7.6M124](/packages/stichoza-google-translate-php)[gettext/languages

gettext languages with plural rules

7530.3M11](/packages/gettext-languages)[punic/punic

PHP-Unicode CLDR

1542.9M29](/packages/punic-punic)[lajax/yii2-translate-manager

Translation management extension for Yii 2

227578.8k13](/packages/lajax-yii2-translate-manager)[optimistdigital/nova-translatable

A laravel-translatable extension for Laravel Nova.

202427.4k5](/packages/optimistdigital-nova-translatable)[outl1ne/nova-translatable

A laravel-translatable extension for Laravel Nova.

203416.9k8](/packages/outl1ne-nova-translatable)

PHPackages © 2026

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