Ejemplo n.º 1
0
function wpll_create_mofile()
{
    global $wpll_pofile, $wpll_mofile;
    include_once ABSPATH . WPINC . '/pomo/po.php';
    $po = new PO();
    if (!@$po->import_from_file($wpll_pofile)) {
        return;
    }
    foreach ($po->entries as $key => $entry) {
        if (!empty($entry->references)) {
            $entry->references = array_filter($entry->references, 'wpll_filter_references');
            if (empty($entry->references)) {
                unset($po->entries[$key]);
                continue;
            }
        }
        if (!empty($entry->translations)) {
            if ($entry->singular == $entry->translations[0]) {
                unset($po->entries[$key]);
            }
        }
    }
    $mo = new MO();
    $mo->headers = $po->headers;
    $mo->entries = $po->entries;
    $mo->export_to_file($wpll_mofile);
    die;
}
Ejemplo n.º 2
0
 function test_export_mo_file()
 {
     $entries = array();
     $entries[] = new Translation_Entry(array('singular' => 'pink', 'translations' => array('розов')));
     $no_translation_entry = new Translation_Entry(array('singular' => 'grey'));
     $entries[] = new Translation_Entry(array('singular' => 'green', 'plural' => 'greens', 'translations' => array('зелен', 'зелени')));
     $entries[] = new Translation_Entry(array('singular' => 'red', 'context' => 'color', 'translations' => array('червен')));
     $entries[] = new Translation_Entry(array('singular' => 'red', 'context' => 'bull', 'translations' => array('бик')));
     $entries[] = new Translation_Entry(array('singular' => 'maroon', 'plural' => 'maroons', 'context' => 'context', 'translations' => array('пурпурен', 'пурпурни')));
     $mo = new MO();
     $mo->set_header('Project-Id-Version', 'Baba Project 1.0');
     foreach ($entries as $entry) {
         $mo->add_entry($entry);
     }
     $mo->add_entry($no_translation_entry);
     $temp_fn = $this->temp_filename();
     $mo->export_to_file($temp_fn);
     $again = new MO();
     $again->import_from_file($temp_fn);
     $this->assertEquals(count($entries), count($again->entries));
     foreach ($entries as $entry) {
         $this->assertEquals($entry, $again->entries[$entry->key()]);
     }
 }
Ejemplo n.º 3
0
 /**
  * change language : if language file not exist return false
  * if language file not in THEME_LANGUAGE_PATH copy it from DEFAULT_LANG to THEME_LANGUAGE_PATH
  * @since 1.0
  */
 function change_language()
 {
     $lang = $_REQUEST['lang_name'];
     if (!in_array($lang, $this->get_language_list())) {
         wp_send_json(array('success' => false));
     }
     if (!in_array($lang, get_available_languages(THEME_LANGUAGE_PATH))) {
         $mo = new MO();
         $mo->set_header('Project-Id-Version', THEME_NAME . 'v' . ET_VERSION);
         $mo->set_header('Report-Msgid-Bugs-To', ET_URL);
         $mo->set_header('MO-Creation-Date', gmdate('Y-m-d H:i:s+00:00'));
         $mo->set_header('MIME-Version', '1.0');
         $mo->set_header('Content-Type', 'text/plain; charset=UTF-8');
         $mo->set_header('Content-Transfer-Encoding', '8bit');
         $mo->set_header('MO-Revision-Date', '2010-MO-DA HO:MI+ZONE');
         $mo->set_header('Last-Translator', 'JOB <EMAIL@ADDRESS>');
         $mo->set_header('Language-Team', 'ENGINETHEMES.COM <*****@*****.**>');
         $mo->import_from_file(DEFAULT_LANGUAGE_PATH . '/' . $lang . '.mo');
         $mo->export_to_file(THEME_LANGUAGE_PATH . '/' . $lang . '.mo');
     }
     $this->set_site_language($lang);
     wp_send_json(array('success' => true, 'data' => array('ID' => $lang, 'lang_name' => $lang)));
 }
Ejemplo n.º 4
0
 function test_export_should_not_include_empty_translations()
 {
     $entries = array();
     $mo = new MO();
     $mo->add_entry(array('singular' => 'baba', 'translations' => array('', '')));
     $temp_fn = $this->temp_filename();
     $mo->export_to_file($temp_fn);
     $again = new MO();
     $again->import_from_file($temp_fn);
     $this->assertEquals(0, count($again->entries));
 }
Ejemplo n.º 5
0
 public static function compilePo($po_file, $mo_file)
 {
     $po = new \PO();
     $po->import_from_file($po_file);
     $mo = new \MO();
     $mo->headers = $po->headers;
     $mo->entries = $po->entries;
     $mo->export_to_file($mo_file);
 }
 /**
  * Save the PO file and compile corresponding MO file.
  *
  * @since 1.2.0 Removed .bak creation, added destination directory generating.
  * @since 1.0.0
  *
  * @uses \PO::export_to_file() to save the updated PO file.
  * @uses \MO::export_to_file() to compile the MO file.
  *
  * @param string $file Optional The file path/name to use.
  */
 public function export($file = null)
 {
     // Override file property with provided filename
     if ($file) {
         $this->filename = $file;
     }
     // Fail if no filename is available
     if (!$this->filename) {
         throw new Exception('No path specified to save to.');
     }
     // Load necessary libraries
     require_once ABSPATH . WPINC . '/pomo/mo.php';
     $mo = new \MO();
     // Create the .po and .mo filenames appropriately
     if (substr($this->filename, -3) == '.po') {
         // .po extension exists...
         $po_file = $this->filename;
         // ...replace with .mo
         $mo_file = substr($this->filename, 0, -3) . '.mo';
     } else {
         // No extension, add each
         $po_file = $this->filename . '.po';
         $mo_file = $this->filename . '.mo';
     }
     // Copy all properties from the PO interface to the MO one
     foreach (get_object_vars($this->po) as $key => $val) {
         $mo->{$key} = $val;
     }
     // Ensure the parent directory exists
     wp_mkdir_p(dirname($po_file));
     // Export the PO file
     $this->po->export_to_file($po_file);
     // Compile the MO file
     $mo->export_to_file($mo_file);
 }