PHPackages                             atk14/translate - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. atk14/translate

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

atk14/translate
===============

A PHP class for converting strings between character encodings without relying on iconv

v1.2.3(1mo ago)040.4k↑35.7%8MITPHPPHP &gt;=5.6.0CI passing

Since Jan 23Pushed 1mo ago2 watchersCompare

[ Source](https://github.com/atk14/Translate)[ Packagist](https://packagist.org/packages/atk14/translate)[ Docs](https://github.com/atk14/Translate)[ RSS](/packages/atk14-translate/feed)WikiDiscussions master Synced 2d ago

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

Translate
=========

[](#translate)

[![Tests](https://github.com/atk14/Translate/actions/workflows/tests.yml/badge.svg?branch=master)](https://github.com/atk14/Translate/actions/workflows/tests.yml)

A PHP class for converting strings between character encodings, without relying on the `iconv` extension.

Installation
------------

[](#installation)

```
composer require atk14/translate
```

Usage
-----

[](#usage)

### Converting between encodings

[](#converting-between-encodings)

```
$iso = Translate::Trans($utf8_string, "UTF-8", "ISO-8859-2");
$utf8 = Translate::Trans($iso_string, "ISO-8859-2", "UTF-8");
$win  = Translate::Trans($utf8_string, "UTF-8", "Windows-1250");
```

If a conversion is not supported, the original string is returned unchanged.

### Converting arrays

[](#converting-arrays)

When `$text` is an array, all string values are converted recursively. Non-string values (integers, nulls, ...) are left as-is.

```
$data = ["name" => "Žofie", "age" => 42];
$converted = Translate::Trans($data, "UTF-8", "ISO-8859-2");
```

To also convert array keys, pass the `recode_array_keys` option:

```
$converted = Translate::Trans($data, "UTF-8", "ISO-8859-2", ["recode_array_keys" => true]);
```

### Transliteration to ASCII

[](#transliteration-to-ascii)

```
echo Translate::Trans("Příliš žluťoučký kůň", "UTF-8", "ASCII");
// → "Prilis zlutoucky kun"
```

The `language` option resolves conflicts between transliteration rules for different languages. Default is Slovak (suitable for Czech and Slovak texts).

```
// Slovak (default): ä → a
echo Translate::Trans("mäso", "UTF-8", "ASCII");
// → "maso"

// German: ä → ae
echo Translate::Trans("Jäger", "UTF-8", "ASCII", ["language" => "de"]);
// → "Jaeger"
```

Accepted language values: `"sk"`, `"sk_SK"`, `"de"`, `"de_DE"`, `"DE"`, `"en"`, etc.

### Case conversion

[](#case-conversion)

```
echo Translate::Lower("PŘÍLIŠ", "UTF-8");        // → "příliš"
echo Translate::Upper("žluťoučký", "UTF-8");     // → "ŽLUŤOUČKÝ"

echo Translate::Lower("PŘÍLIŠ", "ISO-8859-2");   // works for 8-bit encodings too
echo Translate::Upper("žluťoučký", "Windows-1250");
```

### Checking encoding

[](#checking-encoding)

Returns `true` if the string is valid in the given encoding, `false` otherwise.

```
Translate::CheckEncoding($string, "UTF-8");   // → true / false
Translate::CheckEncoding($string, "ASCII");   // → true / false
```

Also works with arrays (checks all keys and values recursively):

```
Translate::CheckEncoding(["key" => "value", ...], "UTF-8");
```

An optional third argument lists forbidden byte sequences:

```
Translate::CheckEncoding($string, "UTF-8", ["\r\n", "
