/**
  * Retrieve all the default and overwritten translations, and apply search and sort on it.
  * 
  * @param $nb_items
  *
  * @return array|null
  */
 private function _prepare_items(&$nb_items)
 {
     if (!is_string($lang_code = kigo_get_site_language()) || !is_array($translations = kigo_I18n::get_translations_for_edit($lang_code))) {
         Loggly_logs::log(array('msg' => 'Unable to retrieve translation for edit', 'lang_code' => $lang_code), array(kigo_I18n::LOGGLY_LOG_TAG_FATAL));
         return null;
     }
     // Handle the input search
     if (isset($_GET['s']) && strlen($search = wp_unslash(trim($_GET['s'])))) {
         $translations = array_filter($translations, function ($item) use($search) {
             return false !== stripos($item['key'], $search) || false !== stripos($item['default_value'], $search) || false !== stripos($item['value'], $search);
         });
     }
     $nb_items = count($translations);
     if (!isset($_REQUEST['orderby']) || !strlen($orderby = $_REQUEST['orderby']) || !in_array($orderby, array_keys(self::$sortable_colums))) {
         $orderby = 'key';
     }
     if (!isset($_REQUEST['order']) || !strlen($order = $_REQUEST['order']) || !in_array($orderby, array('asc', 'desc'))) {
         $order = 'asc';
     }
     uasort($translations, function ($item_a, $item_b) use($orderby, $order) {
         return ('desc' === $order ? -1 : 1) * strnatcasecmp($item_a[$orderby], $item_b[$orderby]);
     });
     return array_slice($translations, ($this->get_pagenum() - 1) * Kigo_Translations_List_Table::TRANSLATIONS_PER_PAGE, Kigo_Translations_List_Table::TRANSLATIONS_PER_PAGE, true);
 }