? openlayers-localizations-750810-23.patch ? openlayers-localizations-750810-24.patch ? includes/layer_types/vector.inc ? includes/layer_types/vector.js Index: openlayers.install =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/openlayers/openlayers.install,v retrieving revision 1.12.2.9 diff -u -p -r1.12.2.9 openlayers.install --- openlayers.install 13 Apr 2010 14:55:47 -0000 1.12.2.9 +++ openlayers.install 2 May 2010 13:50:35 -0000 @@ -108,11 +108,13 @@ function openlayers_schema() { 'not null' => TRUE, 'default' => '', 'description' => 'Layer title.', + 'translatable' => TRUE, ), 'description' => array( 'type' => 'text', 'not null' => TRUE, 'description' => 'Layer description.', + 'translatable' => TRUE, ), 'data' => array( 'type' => 'text', Index: openlayers.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/openlayers/openlayers.module,v retrieving revision 1.69.2.66 diff -u -p -r1.69.2.66 openlayers.module --- openlayers.module 2 May 2010 10:27:31 -0000 1.69.2.66 +++ openlayers.module 2 May 2010 13:50:35 -0000 @@ -227,8 +227,13 @@ function openlayers_get_layer_object($la $layer_types = openlayers_layer_types(); } - $layer->title = t($layer->title); - $layer->description = t($layer->description); + // Manually translate the title and description for layers not in code. + // This needs to take into account a way of declaring a field + // as translatable + if (!isset($layer->in_code_only) || $layer->in_code_only !== TRUE) { + $layer->title = openlayers_tt('layers:title:' . $layer->name, $layer->title); + $layer->description = openlayers_tt('layers:description:' . $layer->name, $layer->description); + } // Attempt to get ctool class if (isset($layer_types[$layer->data['layer_type']]) && @@ -810,3 +815,40 @@ function openlayers_openlayers_layer_typ module_load_include('inc', 'openlayers', 'includes/openlayers.layer_types'); return _openlayers_openlayers_layer_types(); } + +/** + * Translate user defined string. Wrapper function for tt() if i18nstrings enabled. + * + * @param $name + * Textgroup and location glued with ':'. + * @param $string + * String in default language. Default language may or may not be English. + * @param $langcode + * Optional language code if different from current request language. + * @param $update + * Whether to force update/create for the string. + */ +function openlayers_tt($name, $string, $langcode = NULL, $update = FALSE) { + // Translate function. It seems like instead of tt, i18n is moving + // to il8nstrings() as the translation function. + $func = 'tt'; + + // Provide automatic prefix + $name = 'openlayers:' . $name; + + // Statically make sure tt() is available + static $tt; + if (!isset($tt)) { + if (module_exists('18nstrings') && function_exists($func)) { + $tt = $func; + } + } + + // Translate! + if ($tt) { + return $tt($name, $string, $langcode, $update); + } + else { + return t($string); + } +} Index: includes/openlayers.layers.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/openlayers/includes/Attic/openlayers.layers.inc,v retrieving revision 1.9.2.21 diff -u -p -r1.9.2.21 openlayers.layers.inc --- includes/openlayers.layers.inc 26 Apr 2010 21:20:19 -0000 1.9.2.21 +++ includes/openlayers.layers.inc 2 May 2010 13:50:35 -0000 @@ -12,8 +12,8 @@ function _openlayers_openlayers_layers() $layer = new stdClass(); $layer->api_version = 1; $layer->name = 'google_satellite'; - $layer->title = 'Google Maps Satellite'; - $layer->description = 'Google Maps Satellite Imagery.'; + $layer->title = t('Google Maps Satellite'); + $layer->description = t('Google Maps Satellite Imagery.'); $layer->data = array( 'baselayer' => TRUE, 'type' => 'satellite', @@ -25,8 +25,8 @@ function _openlayers_openlayers_layers() $layer = new stdClass(); $layer->api_version = 1; $layer->name = 'google_hybrid'; - $layer->title = 'Google Maps Hybrid'; - $layer->description = 'Google Maps with roads and terrain.'; + $layer->title = t('Google Maps Hybrid'); + $layer->description = t('Google Maps with roads and terrain.'); $layer->data = array( 'baselayer' => TRUE, 'type' => 'hybrid', @@ -38,8 +38,8 @@ function _openlayers_openlayers_layers() $layer = new stdClass(); $layer->api_version = 1; $layer->name = 'google_normal'; - $layer->title = 'Google Maps Normal'; - $layer->description = 'Standard Google Maps Roads'; + $layer->title = t('Google Maps Normal'); + $layer->description = t('Standard Google Maps Roads'); $layer->data = array( 'baselayer' => TRUE, 'type' => 'normal', @@ -51,8 +51,8 @@ function _openlayers_openlayers_layers() $layer = new stdClass(); $layer->api_version = 1; $layer->name = 'google_physical'; - $layer->title = 'Google Maps Physical'; - $layer->description = 'Google Maps Hillshades'; + $layer->title = t('Google Maps Physical'); + $layer->description = t('Google Maps Hillshades'); $layer->data = array( 'baselayer' => TRUE, 'type' => 'physical', @@ -64,8 +64,8 @@ function _openlayers_openlayers_layers() $layer = new stdClass(); $layer->api_version = 1; $layer->name = 'yahoo_satellite'; - $layer->title = 'Yahoo Maps Satellite'; - $layer->description = 'Yahoo satellite imagery tiles.'; + $layer->title = t('Yahoo Maps Satellite'); + $layer->description = t('Yahoo satellite imagery tiles.'); $layer->data = array( 'baselayer' => TRUE, 'type' => 'satellite', @@ -77,8 +77,8 @@ function _openlayers_openlayers_layers() $layer = new stdClass(); $layer->api_version = 1; $layer->name = 'yahoo_street'; - $layer->title = 'Yahoo Maps Street'; - $layer->description = 'Yahoo streets tiles.'; + $layer->title = t('Yahoo Maps Street'); + $layer->description = t('Yahoo streets tiles.'); $layer->data = array( 'baselayer' => TRUE, 'type' => 'street', @@ -90,8 +90,8 @@ function _openlayers_openlayers_layers() $layer = new stdClass(); $layer->api_version = 1; $layer->name = 'yahoo_hybrid'; - $layer->title = 'Yahoo Maps Hybrid'; - $layer->description = 'Yahoo hybrid of streets and satellite tiles.'; + $layer->title = t('Yahoo Maps Hybrid'); + $layer->description = t('Yahoo hybrid of streets and satellite tiles.'); $layer->data = array( 'baselayer' => TRUE, 'type' => 'hybrid', @@ -103,8 +103,8 @@ function _openlayers_openlayers_layers() $layer = new stdClass(); $layer->api_version = 1; $layer->name = 'virtualearth_street'; - $layer->title = 'Virtual Earth Street'; - $layer->description = 'Virtual Earth (Bing) street tiles.'; + $layer->title = t('Virtual Earth Street'); + $layer->description = t('Virtual Earth (Bing) street tiles.'); $layer->data = array( 'baselayer' => TRUE, 'type' => 'street', @@ -116,8 +116,8 @@ function _openlayers_openlayers_layers() $layer = new stdClass(); $layer->api_version = 1; $layer->name = 'virtualearth_satellite'; - $layer->title = 'Virtual Earth Satellite'; - $layer->description = 'Virtual Earth (Bing) satellite tiles.'; + $layer->title = t('Virtual Earth Satellite'); + $layer->description = t('Virtual Earth (Bing) satellite tiles.'); $layer->data = array( 'baselayer' => TRUE, 'type' => 'satellite', @@ -129,8 +129,8 @@ function _openlayers_openlayers_layers() $layer = new stdClass(); $layer->api_version = 1; $layer->name = 'virtualearth_hybrid'; - $layer->title = 'Virtual Earth Hybrid'; - $layer->description = 'Virtual Earth (Bing) hybrid of streets and satellite tiles.'; + $layer->title = t('Virtual Earth Hybrid'); + $layer->description = t('Virtual Earth (Bing) hybrid of streets and satellite tiles.'); $layer->data = array( 'baselayer' => TRUE, 'type' => 'hybrid', @@ -143,8 +143,8 @@ function _openlayers_openlayers_layers() $layer = new stdClass(); $layer->api_version = 1; $layer->name = 'osm_mapnik'; - $layer->title = 'OSM Mapnik'; - $layer->description = 'The main OpenStreetMap map'; + $layer->title = t('OSM Mapnik'); + $layer->description = t('The main OpenStreetMap map'); $layer->data = array( 'baselayer' => TRUE, 'attribution' => t('©CCBYSA 2010 @@ -164,8 +164,8 @@ function _openlayers_openlayers_layers() $layer = new stdClass(); $layer->api_version = 1; $layer->name = 'osm_tah'; - $layer->title = 'OSM Tiles@Home'; - $layer->description = 'Alternative, community-rendered OpenStreetMap'; + $layer->title = t('OSM Tiles@Home'); + $layer->description = t('Alternative, community-rendered OpenStreetMap'); $layer->data = array( 'baselayer' => TRUE, 'attribution' => t('©CCBYSA 2010 @@ -185,8 +185,8 @@ function _openlayers_openlayers_layers() $layer = new stdClass(); $layer->api_version = 1; $layer->name = 'osm_cycle'; - $layer->title = 'OSM Cycling Map'; - $layer->description = 'OpenStreetMap with highlighted bike lanes'; + $layer->title = t('OSM Cycling Map'); + $layer->description = t('OpenStreetMap with highlighted bike lanes'); $layer->data = array( 'baselayer' => TRUE, 'attribution' => t('©CCBYSA 2010 @@ -206,7 +206,7 @@ function _openlayers_openlayers_layers() $layer = new stdClass(); $layer->api_version = 1; $layer->name = 'osm_4326_hybrid'; - $layer->title = 'OSM Overlay'; + $layer->title = t('OSM Overlay'); $layer->description = 'Semi-transparent hybrid overlay. Projected into WSG84 for use on non spherical-mercator maps.'; $layer->data = array( @@ -234,8 +234,8 @@ function _openlayers_openlayers_layers() $layer = new stdClass(); $layer->api_version = 1; $layer->name = 'wms_default'; - $layer->title = 'Default OpenLayers WMS'; - $layer->description = 'MetaCarta basemap of province and water boundaries'; + $layer->title = t('Default OpenLayers WMS'); + $layer->description = t('MetaCarta basemap of province and water boundaries'); $layer->data = array( 'projection' => array('4326'), 'baselayer' => TRUE, @@ -250,46 +250,4 @@ function _openlayers_openlayers_layers() return $layers; -} - -/** - * This function is for the po editor to be able to find these strings, - * since in the codebase they are not in t()'s, because they are later - * run through t() in the layer loader function - */ -function _openlayers_openlayers_layers_i18n() { - $translatable_strings = array( - // titles - t('Google Maps Satellite'), - t('Google Maps Hybrid'), - t('Google Maps Normal'), - t('Google Maps Physical'), - t('Yahoo Maps Street'), - t('Yahoo Maps Hybrid'), - t('Yahoo Maps Satellite'), - t('Virtual Earth Street'), - t('Virtual Earth Satellite'), - t('Virtual Earth Hybrid'), - t('OSM Mapnik'), - t('OSM Tiles@Home'), - t('OSM Cycling Map'), - t('OSM Overlay'), - t('Default OpenLayers WMS'), - // descriptions - t('Alternative, community-rendered OpenStreetMap'), - t('Google Maps Hillshades'), - t('Google Maps Satellite Imagery.'), - t('Google Maps with roads and terrain.'), - t('MetaCarta basemap of province and water boundaries'), - t('OpenStreetMap with highlighted bike lanes'), - t('Semi-transparent hybrid overlay. Projected into - WSG84 for use on non spherical-mercator maps.'), - t('Standard Google Maps Roads'), - t('The main OpenStreetMap map'), - t('Virtual Earth (Bing) hybrid of streets and satellite tiles.'), - t('Virtual Earth (Bing) satellite tiles.'), - t('Virtual Earth (Bing) street tiles.'), - t('Yahoo hybrid of streets and satellite tiles.'), - t('Yahoo satellite imagery tiles.'), - t('Yahoo streets tiles.')); -} +} \ No newline at end of file Index: modules/openlayers_ui/openlayers_ui.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/openlayers/modules/openlayers_ui/Attic/openlayers_ui.module,v retrieving revision 1.1.2.29 diff -u -p -r1.1.2.29 openlayers_ui.module --- modules/openlayers_ui/openlayers_ui.module 24 Mar 2010 20:43:32 -0000 1.1.2.29 +++ modules/openlayers_ui/openlayers_ui.module 2 May 2010 13:50:35 -0000 @@ -487,7 +487,7 @@ function openlayers_ui_object_export(&$f // Use CTools to create export code ctools_include('export'); $code = '$items = array();' ."\n"; - $code .= ctools_export_object($api, $object, ''); + $code .= openlayers_export_object($api, $object, ''); $code .= '$items["'. $object->name .'"] = $' . $api . ';' ."\n"; $code .= 'return $items;'; $rows = substr_count($code, "\n") + 1; @@ -623,3 +623,69 @@ function openlayers_ui_get_style_options } return $options; } + +/** + * Custom export object + * + * This is a copy from ctools_export_object() with ability to + * add translation into it. + */ +function openlayers_export_object($table, $object, $indent = '', $identifier = NULL, $additions = array(), $additions2 = array()) { + $schema = ctools_export_get_schema($table); + if (!isset($identifier)) { + $identifier = $schema['export']['identifier']; + } + + $output = $indent . '$' . $identifier . ' = new ' . get_class($object) . ";\n"; + + if ($schema['export']['can disable']) { + $output .= $indent . '$' . $identifier . '->disabled = FALSE; /* Edit this to true to make a default ' . $identifier . ' disabled initially */' . "\n"; + } + if (!empty($schema['export']['api']['current_version'])) { + $output .= $indent . '$' . $identifier . '->api_version = ' . $schema['export']['api']['current_version'] . ";\n"; + } + + // Put top additions here: + foreach ($additions as $field => $value) { + $output .= $indent . '$' . $identifier . '->' . $field . ' = ' . ctools_var_export($value, $indent) . ";\n"; + } + + // Go through our schema and build correlations. + foreach ($schema['fields'] as $field => $info) { + if (!empty($info['no export'])) { + continue; + } + if (!isset($object->$field)) { + if (isset($info['default'])) { + $object->$field = $info['default']; + } + else { + $object->$field = ''; + } + } + + if (!empty($info['export callback']) && function_exists($info['export callback'])) { + $output .= $indent . '$' . $identifier . '->' . $field . ' = ' . $info['export callback']($object, $field, $value, $indent) . ";\n"; + } + else { + $value = $object->$field; + if ($info['type'] == 'int') { + $value = (isset($info['size']) && $info['size'] == 'tiny') ? (bool) $value : (int) $value; + } + + if (is_array($info) && $info['translatable']) { + $output .= $indent . '$' . $identifier . '->' . $field . ' = t(' . ctools_var_export($value, $indent) . ");\n"; + } + else { + $output .= $indent . '$' . $identifier . '->' . $field . ' = ' . ctools_var_export($value, $indent) . ";\n"; + } + } + } + + // And bottom additions here + foreach ($additions2 as $field => $value) { + $output .= $indent . '$' . $identifier . '->' . $field . ' = ' . ctools_var_export($value, $indent) . ";\n"; + } + + return $output; +} Index: modules/openlayers_ui/includes/openlayers_ui.layers.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/openlayers/modules/openlayers_ui/includes/Attic/openlayers_ui.layers.inc,v retrieving revision 1.1.2.6 diff -u -p -r1.1.2.6 openlayers_ui.layers.inc --- modules/openlayers_ui/includes/openlayers_ui.layers.inc 22 Mar 2010 23:55:10 -0000 1.1.2.6 +++ modules/openlayers_ui/includes/openlayers_ui.layers.inc 2 May 2010 13:50:35 -0000 @@ -198,6 +198,9 @@ function openlayers_ui_layers_import_for * Validate handler to import a preset */ function openlayers_ui_layers_import_validate($form, &$form_state) { + // Remove any t() + // This could probably be better regex + $layer = preg_replace("/t\(\'(.*)\'\)/", '\'$1\'', $form_state['values']['layer']); $items = ''; ob_start();