verifyPermission( 'p_languages_edit_master' ); $languages = $gBitLanguage->listLanguages(); $gBitSmarty->assign_by_ref( 'languages', $languages ); $feedback = $masterMsg = array(); if( !empty( $_REQUEST['delete_master'] ) && !empty( $_REQUEST['source_hash'] ) && is_array( $_REQUEST['source_hash'] ) ) { if( empty( $_REQUEST['confirm'] ) ) { $gBitSystem->setBrowserTitle( tra( 'Confirm Delete' ) ); $formHash['delete_master'] = TRUE; $msgHash = array( 'label' => tra( 'Delete Master Strings' ), 'warning' => tra( 'This will remove the language master string. If you are tracking translations and the string is still used, it will be inserted again, however, any translations associated with it will be lost.' ), 'confirm_item' => tra( "The following Master Strings will be removed" ).":", ); foreach( $_REQUEST['source_hash'] as $source_hash ) { $gBitLanguage->loadMasterStrings( $source_hash ); $formHash['input'][] = ''.$gBitLanguage->mStrings['master'][$source_hash]['source']; } $gBitSystem->confirmDialog( $formHash, $msgHash ); } else { foreach( $_REQUEST['source_hash'] as $source_hash ) { if( $gBitLanguage->expungeMasterString( $source_hash ) ) { $success = TRUE; } else { $error = TRUE; } } if( !empty( $error ) ) { $feedback['error'] = 'At least one of the master strings could not be deleted.'; } elseif( !empty( $success ) ) { $feedback['success'] = 'The requested master strings were successfully deleted.'; } } } elseif( !empty( $_REQUEST['guess_translations'] ) ) { if( is_string( $_REQUEST['source_hash'] ) ) { $_REQUEST['source_hash'] = array( $_REQUEST['source_hash'] ); } $transCount = 0; $masterStrings = array(); foreach( $_REQUEST['source_hash'] AS $reqSourceHash ) { $gBitLanguage->loadMasterStrings( $reqSourceHash ); $masterStrings[$reqSourceHash] = $gBitLanguage->mStrings['master'][$reqSourceHash]; if( strlen( $masterStrings[$reqSourceHash]['source'] ) > 70 ) { $masterStrings[$reqSourceHash]['textarea'] = TRUE; } $gBitSmarty->assign_by_ref( 'masterStrings', $masterStrings ); $masterString = $gBitLanguage->mStrings['master'][$reqSourceHash]; $tranArray = array( 'ar', 'bg', 'cs', 'da', 'de', 'el', 'es', 'fi', 'fr', 'hi', 'hr', 'it', 'nl', 'pt', 'ja', 'ko', 'no', 'pl', 'pt', 'ro', 'sv', 'ru', 'zh-CN' ); $tranStrings[$reqSourceHash] = $gBitLanguage->getTranslatedStrings( $reqSourceHash ); foreach( $tranArray as $toLangCode ) { $lowerLangCode = strtolower( $toLangCode ); if( !empty( $gBitLanguage->mLanguageList[$lowerLangCode] ) && empty( $tranStrings[$reqSourceHash][$lowerLangCode] ) ) { $requestUrl = "http://translate.google.com/translate_t?ie=UTF-8&oe=UTF-8&text=".urlencode( $masterString['source'] )."&langpair=en|$toLangCode"; $handle = fopen( $requestUrl, "r"); if($handle) { $transCount++; $contents = ''; while (!feof($handle)) { $contents .= fread($handle, 8192); } fclose($handle); preg_match_all( "!
]*>([^<]*)
.*!", $contents, $matches ); if( isset( $matches[1][0] ) && $matches[1][0] != $gBitLanguage->mStrings['master'][$reqSourceHash]['source'] ) { $tranStrings[$reqSourceHash][$lowerLangCode]['guessed'] = TRUE; $tranStrings[$reqSourceHash][$lowerLangCode]['source_hash'] = $reqSourceHash; $tranStrings[$reqSourceHash][$lowerLangCode]['trans'] = trim( $matches[1][0] ); $tranStrings[$reqSourceHash][$lowerLangCode]['lang_code'] = $lowerLangCode; } } } } if( $transCount > 200 ) { // avoid abuse of google translate URL and prevent URL timeout break; } } $gBitSmarty->assign( 'sources', $_REQUEST['source_hash'] ); $gBitSmarty->assign_by_ref( 'tranStrings', $tranStrings ); } elseif( !empty( $_REQUEST['save_translations'] ) ) { foreach( $_REQUEST['edit_trans'] as $sourceHash => $sources ) { foreach( $sources as $langCode => $string ) { $tranStrings[$sourceHash] = $gBitLanguage->getTranslatedStrings( $sourceHash ); // store if (We had a string and it is now empty) or ( we have a new string and it is different from before) if( (empty( $string ) && !empty( $tranStrings[$sourceHash][$langCode] )) || (!empty( $string ) && (empty( $tranStrings[$sourceHash][$langCode] ) || $string != $tranStrings[$sourceHash][$langCode]['trans']) ) ) { $gBitLanguage->storeTranslationString( $langCode, $string, $sourceHash ); } } $gBitLanguage->loadMasterStrings( $sourceHash ); if( !empty( $_REQUEST['edit_master'][$sourceHash] ) ) { $newSourceHash = $gBitLanguage->getSourceHash( $_REQUEST['edit_master'][$sourceHash] ); $gBitLanguage->loadMasterStrings(); if( $newSourceHash != $sourceHash ) { if( $gBitLanguage->storeMasterString( array( 'source_hash' => $sourceHash, 'new_source' => $_REQUEST['edit_master'][$sourceHash] ) ) ) { unset( $_REQUEST['source_hash'] ); $_REQUEST['source_hash'][] = $newSourceHash; $tranStrings[$newSourceHash] = $gBitLanguage->getTranslatedStrings( $newSourceHash ); $masterMsg['success'][] = 'Master translation string has been updated'; } else { $masterMsg['error'][] = $gBitLanguage->mErrors['master']; } } } } $masterMsg['success'][] = 'Translation strings have been updated'; $gBitSmarty->assign_by_ref( 'masterStrings', $gBitLanguage->mStrings['master'] ); $gBitSmarty->assign_by_ref( 'tranStrings', $tranStrings ); $gBitSmarty->assign( 'sources', $_REQUEST['source_hash'] ); } elseif( !empty( $_REQUEST['source_hash'] ) && empty( $_REQUEST['cancel'] ) ) { foreach( $_REQUEST['source_hash'] as $reqSourceHash ) { $gBitLanguage->loadMasterStrings( $reqSourceHash ); if( strlen( $gBitLanguage->mStrings['master'][$reqSourceHash]['source'] ) > 70 ) { $gBitLanguage->mStrings['master'][$reqSourceHash]['textarea'] = TRUE; } $translate[$reqSourceHash] = $gBitLanguage->getTranslatedStrings( $_REQUEST['source_hash'] ); } $gBitSmarty->assign_by_ref( 'masterStrings', $gBitLanguage->mStrings['master'] ); $gBitSmarty->assign_by_ref( 'tranStrings', $translate ); $gBitSmarty->assign( 'sources', $_REQUEST['source_hash'] ); } elseif( !empty( $_REQUEST['find'] ) && !empty( $_REQUEST['search'] ) ) { $gBitSmarty->assign_by_ref( 'masterStrings', $gBitLanguage->searchMasterStrings( $_REQUEST['find'] ) ); } else { $gBitLanguage->loadMasterStrings( NULL, ( !empty( $_REQUEST['filter'] ) ? $_REQUEST['filter'] : NULL ), ( !empty( $_REQUEST['filter_lang'] ) ? $_REQUEST['filter_lang'] : NULL ) ); // work out what strings to display if( empty( $_REQUEST['char'] )) { $pattern = "/^a/i"; } elseif ( $_REQUEST['char'] == '0-9' ) { $pattern = "/^\d/"; } elseif ( $_REQUEST['char'] == '+' ) { $pattern = "/^[^a-zA-Z0-9]/"; } elseif ( $_REQUEST['char'] == 'all' ) { $pattern = "//"; } else { $pattern = "/^".$_REQUEST['char']."/i"; } $masterStr = $gBitLanguage->mStrings['master']; foreach( $masterStr as $key => $master ) { if( preg_match( $pattern, $master['source'] ) ) { $masterStrings[$key] = $master; } } $gBitSmarty->assign( 'char', empty( $_REQUEST['char'] ) ? '' : $_REQUEST['char'] ); $gBitSmarty->assign_by_ref( 'masterStrings', $masterStrings ); } // Display the template $gBitSmarty->assign( 'masterMsg', $masterMsg ); $gBitSmarty->assign( 'feedback', $feedback ); $gBitSystem->display( 'bitpackage:languages/language_master_strings.tpl', 'Edit Master Strings' , array( 'display_mode' => 'display' )); ?>