https://github.com/yohn/lang
Simple Language PHP Class
https://github.com/yohn/lang
Last synced: 5 months ago
JSON representation
Simple Language PHP Class
- Host: GitHub
- URL: https://github.com/yohn/lang
- Owner: Yohn
- License: mit
- Created: 2024-10-28T00:28:43.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-06T07:14:21.000Z (about 1 year ago)
- Last Synced: 2025-07-16T04:17:13.533Z (11 months ago)
- Language: PHP
- Size: 21.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Yohns\Lang\Text
Simple and easy PHP translation library with auto-generation support, dot notation, and seamless integration with `yohns/config`.
## Installation
```bash
composer require yohns/lang
```
## Quick Start
```php
use Yohns\Core\Config;
use Yohns\Lang\Text;
// Initialize Config for your application
new Config(__DIR__ . '/lib/Config');
// Initialize Text with language directory
$langDir = __DIR__ . '/lib/Lang';
$text = new Text($langDir, 'en'); // 'en' for English
// Basic usage
echo Text::L('welcome', 'Welcome to our site');
// Output: "Welcome to our site" (or translation if found)
// With placeholders
echo Text::L('hello_user', 'Hello, [name]!', ['[name]' => 'John']);
// Output: "Hello, John!"
// Dot notation for nested translations
echo Text::L('pages.about', 'About Us');
// Output: "About Us" (or translation if found)
```
## Features
- **Auto-generation**: Missing translations are automatically added to the default language file
- **Dot notation**: Organize translations hierarchically (e.g., `pages.about`, `messages.success.saved`)
- **Placeholder support**: Replace `[placeholders]` with dynamic values
- **Fallback system**: Falls back to default language, then to provided default text
- **Config integration**: Uses `yohns/config` for file management and configuration
- **Multiple languages**: Easy switching between languages
## Overview
Class `Text`
This class is responsible for handling language translations.
It loads language files from a specified directory using the Config class
and provides functionality to retrieve phrases in the specified language.
It supports dynamic addition of phrases to the default language file
if they do not already exist, and supports dot notation for nested keys.
## Methods
| Name | Description |
|------|-------------|
|[L](#textl)|Retrieves the translated phrase for the given phrase key.|
|[__construct](#text__construct)|Text constructor.|
|[getAll](#textgetall)|Retrieves all loaded texts for the current language.|
|[reload](#textreload)|Reloads the language files from the language directory.|
|[set](#textset)|Sets a new phrase or updates an existing one in the current language.|
### Text::L
**Description**
```php
public static L (string $key, string $default, array $replacements)
```
Retrieves the translated phrase for the given phrase key.
Supports dot notation for nested keys (e.g., 'pages.about').
If the phrase does not exist in the loaded language text,
it adds the default text to the default language file.
**Parameters**
* `(string) $key`
: The key of the phrase to retrieve (supports dot notation).
* `(string) $default`
: The default text to use and store if the key is not found.
* `(array) $replacements`
: Optional replacements for placeholders in the phrase.
**Return Values**
`string`
> The translated phrase with optional replacements.
### Text::__construct
**Description**
```php
public __construct (string $dir, string $lingo)
```
Text constructor.
**Parameters**
* `(string) $dir`
: The directory where translations are located.
* `(string) $lingo`
: The language identifier, default is 'en'.
**Return Values**
`void`
**Throws Exceptions**
`\Exception`
> if the specified language directory is not readable
or the specified language file does not exist.
### Text::getAll
**Description**
```php
public static getAll (void)
```
Retrieves all loaded texts for the current language.
**Parameters**
`This function has no parameters.`
**Return Values**
`mixed`
> An array containing all loaded texts or null if not loaded.
### Text::reload
**Description**
```php
public static reload (void)
```
Reloads the language files from the language directory.
**Parameters**
`This function has no parameters.`
**Return Values**
`void`
### Text::set
**Description**
```php
public static set (string $key, mixed $value)
```
Sets a new phrase or updates an existing one in the current language.
This is useful for runtime customization of language strings.
**Parameters**
* `(string) $key`
: The key of the text to set.
* `(mixed) $value`
: The value to associate with the key.
**Return Values**
`void`