diff options
Diffstat (limited to 'sites/all/modules/views/plugins/views_plugin_localization_core.inc')
-rw-r--r-- | sites/all/modules/views/plugins/views_plugin_localization_core.inc | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/sites/all/modules/views/plugins/views_plugin_localization_core.inc b/sites/all/modules/views/plugins/views_plugin_localization_core.inc new file mode 100644 index 000000000..87443ca0d --- /dev/null +++ b/sites/all/modules/views/plugins/views_plugin_localization_core.inc @@ -0,0 +1,109 @@ +<?php + +/** + * @file + * Contains the Drupal core localization plugin. + */ + +/** + * Localization plugin to pass translatable strings through t(). + * + * @ingroup views_localization_plugins + */ +class views_plugin_localization_core extends views_plugin_localization { + + /** + * Translate a string. + * + * @param $string + * The string to be translated. + * @param $keys + * An array of keys to identify the string. Generally constructed from + * view name, display_id, and a property, e.g., 'header'. + * @param $format + * The input format of the string. This is optional. + */ + function translate_string($string, $keys = array(), $format = '') { + return t($string); + } + + /** + * Save a string for translation. + * + * @param $string + * The string to be translated. + * @param $keys + * An array of keys to identify the string. Generally constructed from + * view name, display_id, and a property, e.g., 'header'. + * @param $format + * The input format of the string. This is optional. + */ + function save_string($string, $keys = array(), $format = '') { + global $language; + + // If the current language is 'en', we need to reset the language + // in order to trigger an update. + // TODO: add test for number of languages. + if ($language->language == 'en') { + $changed = TRUE; + $languages = language_list(); + $cached_language = $language; + unset($languages['en']); + if (!empty($languages)) { + $language = current($languages); + } + } + + t($string); + + if (isset($cached_language)) { + $language = $cached_language; + } + return TRUE; + } + + /** + * Delete a string. + * + * Deletion is not supported. + * + * @param $source + * Full data for the string to be translated. + */ + function delete($source) { + return FALSE; + } + + /** + * Collect strings to be exported to code. + * + * String identifiers are not supported so strings are anonymously in an array. + * + * @param $source + * Full data for the string to be translated. + */ + function export($source) { + if (!empty($source['value'])) { + $this->export_strings[] = $source['value']; + } + } + + /** + * Render any collected exported strings to code. + * + * @param $indent + * An optional indentation for prettifying nested code. + */ + function export_render($indent = ' ') { + $output = ''; + if (!empty($this->export_strings)) { + $this->export_strings = array_unique($this->export_strings); + $output = $indent . '$translatables[\'' . $this->view->name . '\'] = array(' . "\n"; + foreach ($this->export_strings as $string) { + $output .= $indent . " t('" . str_replace("'", "\'", $string) . "'),\n"; + } + $output .= $indent . ");\n"; + } + return $output; + } +} |