PHPackages                             undercloud/lang - 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. undercloud/lang

ActiveLibrary

undercloud/lang
===============

PHP Multilanguage System

113PHP

Since Apr 13Pushed 10y ago1 watchersCompare

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

READMEChangelogDependenciesVersions (1)Used By (0)

\#Lang PHP Multilanguage System

\##install `composer require undercloud/lang`

\##translates

```
// /en/message.php
return [
	'hello' => 'Hello, :username',
	'hobbies' => 'Your hobbies is: :hobbies'
];
```

\##setup

```
require 'vendor/autoload.php';

$lang = new Undercloud\Lang([
	// translates path
	'root' => '/path/to/translates',
	// list of user accepted, default parse http header Accept-Language
	'accept' => ['en', 'de'],
	// list of supported translates
	'avail' => ['en','fr','de'],
	// setup translates file handler, default PHP Arrays
	'parser' => new Undercloud\Lang\Parser\AbstractParser
]);

// Hello, John
$lang('message.hello', ['username' => 'John']);

//Your hobbies is: music, football, web
$lang('message.hobbies', ['hobbies': ['music', 'football', 'web']]);
```

\##api

```
// parse Accept-Language header and return supported locales
$lang->getLangsHttp();

// return primary locale name
$lang->getPrimaryLocale();

// return fallback locale
$lang->getFallBackLocale();
```

\##parser By default avail two type of language files parsers `Undercloud\Lang\Parser\DefaultParser` and `Undercloud\Lang\Parser\JsonParser`, You can define you'r own parser:

```
// file based parser
use Undercloud\Lang\Parser\AbstractParser;

class MyOwnParser extends AbstractParser
{
	public function parse()
	{
		$path = func_get_arg(0) . '.extension';
		/*...*/
	}
}
```

or

```
// database like parser
use Undercloud\Lang\Parser\AbstractParser;

class MyOwnParser extends AbstractParser
{
	public $buildPath = false;

	public function parse()
	{
		$locale = func_get_arg(0);
		$entity = func_get_arg(1);

		/*...*/
	}
}
```

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community4

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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/920a45a1bd1af5960cf6781cd2d8831ebfe2890c1077210667802afa109d8d13?d=identicon)[undercloud](/maintainers/undercloud)

### Embed Badge

![Health badge](/badges/undercloud-lang/health.svg)

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

PHPackages © 2026

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