Example #1
0
        if (Request::segment(2) == 'admin' && !App::runningInConsole() && mb_strlen($locale) == 2) {
            header('Location: ' . url(Config::get('app.admin_default_locale') . '/' . Request::segment(2)));
            exit;
        } else {
            $admin_locale = Config::get('app.admin_default_locale');
        }
    }
}
$language = null;
$admin_language = null;
if (!App::runningInConsole()) {
    $language = \Neonbug\Common\Models\Language::getByLocale($locale);
    if ($language == null) {
        exit('Language not found');
    }
    $admin_language = $admin_locale == $locale ? $language : \Neonbug\Common\Models\Language::getByLocale($admin_locale);
    if ($admin_language == null) {
        exit('Language not found');
    }
}
App::singleton('Language', function () use($language) {
    return $language;
});
App::singleton('AdminLanguage', function () use($admin_language) {
    return $admin_language;
});
App::singleton('LanguageRepository', '\\Neonbug\\Common\\Repositories\\LanguageRepository');
//frontend
Route::group(['middleware' => ['online']], function () use($locale) {
    Route::get('/', 'HomeController@index');
    //special route without locale prefix
Example #2
0
 function insertTranslations($dir)
 {
     // load translations from files
     $translations = [];
     if (file_exists($dir)) {
         $arr = scandir($dir);
         foreach ($arr as $item) {
             if ($item == '.' || $item == '..') {
                 continue;
             }
             if (mb_strlen($item) < 4 || mb_substr($item, -4) != '.php') {
                 continue;
             }
             $translations = array_merge($translations, include $dir . $item);
         }
     }
     // gather language codes
     $languages = [];
     $translation_keys = [];
     foreach ($translations as $key => $values) {
         $translation_keys[] = $key;
         foreach ($values as $lang => $value) {
             if (!in_array($lang, $languages)) {
                 $languages[] = $lang;
             }
         }
     }
     // load existing translations
     $existing_translation_sources = \Neonbug\Common\Models\TranslationSource::all();
     $existing_source_keys = [];
     foreach ($existing_translation_sources as $translation_source) {
         if (!in_array($translation_source->id_translation_source, $existing_source_keys)) {
             $existing_source_keys[] = $translation_source->id_translation_source;
         }
     }
     $existing_translations = \Neonbug\Common\Models\Translation::all();
     $existing_translation_keys = [];
     foreach ($existing_translations as $translation) {
         $key = $translation->id_language . '.' . $translation->id_translation_source;
         if (!array_key_exists($key, $existing_translation_keys)) {
             $existing_translation_keys[$key] = ['id_translation' => $translation->id_translation, 'value' => $translation->value];
         }
     }
     // insert translations
     if (sizeof($languages) > 0) {
         $locale_to_id_languages = [];
         $trans = \Neonbug\Common\Models\Language::whereIn('locale', $languages)->get();
         foreach ($trans as $item) {
             $locale_to_id_languages[$item->locale] = $item->id_language;
         }
         $translation_source_insert_arr = [];
         foreach ($translation_keys as $key) {
             // skip existing translation sources
             if (in_array($key, $existing_source_keys)) {
                 continue;
             }
             $translation_source_insert_arr[] = ['id_translation_source' => $key, 'created_at' => date('Y-m-d'), 'updated_at' => date('Y-m-d')];
         }
         \Neonbug\Common\Models\TranslationSource::insert($translation_source_insert_arr);
         $translation_insert_arr = [];
         $translation_update_arr = [];
         foreach ($translations as $key => $values) {
             foreach ($values as $lang => $value) {
                 if (!array_key_exists($lang, $locale_to_id_languages)) {
                     continue;
                 }
                 $id_language = $locale_to_id_languages[$lang];
                 $translation_key = $id_language . '.' . $key;
                 if (array_key_exists($translation_key, $existing_translation_keys)) {
                     // skip existing translations with equal values
                     if ($existing_translation_keys[$translation_key]['value'] == $value) {
                         continue;
                     }
                     // update existing translations with different values
                     $translation_update_arr[$existing_translation_keys[$translation_key]['id_translation']] = $value;
                 } else {
                     $translation_insert_arr[] = ['id_translation_source' => $key, 'id_language' => $id_language, 'value' => $value, 'created_at' => date('Y-m-d'), 'updated_at' => date('Y-m-d')];
                 }
             }
         }
         // insert new translations
         \Neonbug\Common\Models\Translation::insert($translation_insert_arr);
         // update existing translations
         foreach ($translation_update_arr as $id_translation => $value) {
             \Neonbug\Common\Models\Translation::where('id_translation', $id_translation)->update(['value' => $value]);
         }
         //TODO implement deleting missing translations?
     }
 }
 public function getAll()
 {
     return \Neonbug\Common\Models\Language::all();
 }