There is no license information available for the latest version (2.0.1) of this package.

2.0.1 2015-12-22 23:23 UTC

This package is not auto-updated.

Last update: 2020-05-29 17:38:19 UTC


Transliteration provides one-way string transliteration (romanization) and cleans text by replacing unwanted characters. takes Unicode text and tries to represent it in US-ASCII characters (universally displayable, unaccented characters) by attempting to transliterate the pronunciation expressed by the text in some other writing system to Roman letters.

This adapts the module from for use with Laravel.


  • Transliterate text to US-ASCII characters

Why use this?

  • I use this for filename on uploads. See this image:


Quick start

Required setup

In the require key of composer.json file add the following

Laravel 5

"that0n3guy/transliteration": "2.0.x"

Laravel 4

"that0n3guy/transliteration": "1.0.x"

Run the Composer update command

$ composer update

In your config/app.php add 'That0n3guy\Transliteration\TransliterationServiceProvider' to the end of the $providers array

'providers' => array(



How to use

Simply call the Transliteration class:

Route::get('/test', function(){
  echo Transliteration::clean_filename('test& ® is true');

This would return test_r_is_true

Set a language

You can optionally set a Optional ISO 639 language code. Do it like so:

Route::get('/test', function(){
  echo Transliteration::clean_filename('testing Japanese 日本語', 'jpn');

This would return testing_Japanese_Ri_Ben_Yu_.

How to use to rename file uploads (sanitize them)

This is an old example, but still relevant. It uses Cabinet which I don't really recommend using anymore since there are better options.

Add something like:

// if using transliteration
if (class_exists( 'That0n3guy\Transliteration\Transliteration' )) {
  $file->fileSystemName = Transliteration::clean_filename($file->getClientOriginalName());  // You can see I am cleaning the filename

To your Upload controller. For example. I added it to my UploadController.php and my store() method looks like so:

 * Stores new upload
public function store()
    $file = Input::file('file');

    // if using transliteration
    if (class_exists( 'That0n3guy\Transliteration\Transliteration' )) {
      $file->fileSystemName = Transliteration::clean_filename($file->getClientOriginalName());

    $upload = new Upload;

    try {
    } catch(Exception $exception){
        // Something went wrong. Log it.
        $error = array(
            'name' => $file->getClientOriginalName(),
            'size' => $file->getSize(),
            'error' => $exception->getMessage(),
        // Return error
        return Response::json($error, 400);

    // If it now has an id, it should have been successful.
    if ( $upload->id ) {

Example how to use with octobercms

    "require": {
        "that0n3guy/transliteration": "^2.0"

Create a config file in your plugins config folder (create this folder) just like File structure example:


The config file should contain:

use Illuminate\Support\Facades\Config;

$config = [
    // This contains the Laravel Packages that you want this plugin to utilize listed under their package identifiers
    'packages' => [
        'that0n3guy/transliteration'  => [
            'providers' => [
            'aliases' => [
                'Transliteration' => '\That0n3guy\Transliteration\Facades\Transliteration',


return $config;

Now you can use transliteration facade anywhere in your octobercms php code (like in the docs above).