i18nviews.pages.inc 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. /**
  3. * @file
  4. * Views translation page
  5. */
  6. // This needs i18n_string page library and some views admin functions
  7. require_once drupal_get_path('module', 'i18n_string') . '/i18n_string.pages.inc';
  8. require_once drupal_get_path('module', 'views') . '/includes/admin.inc';
  9. /**
  10. * Provide a better organized views translation page grouping strings by display.
  11. *
  12. * @see i18n_string_translate_page_object()
  13. *
  14. * @param $view
  15. * View object
  16. * @param $langcode
  17. * Language code
  18. */
  19. function i18nviews_object_translate_page($view, $langcode) {
  20. // Build i18n wrapper and get all strings
  21. $object = i18n_object('views', $view);
  22. $strings = $object->get_strings(array('empty' => TRUE));
  23. drupal_set_title(t('Translate to @language', array('@language' => i18n_language_name($langcode))));
  24. // For each string object, objectid = display
  25. return drupal_get_form('i18nviews_translate_page_form', $view, $strings, $langcode);
  26. }
  27. /**
  28. * Form builder callback for in-place string translation.
  29. */
  30. function i18nviews_translate_page_form($form, &$form_state, $view, $strings, $langcode) {
  31. // Group strings by display
  32. $groups = array();
  33. foreach ($strings as $key => $i18nstring) {
  34. $groups[$i18nstring->objectid][$key] = $i18nstring;
  35. }
  36. // The base form adds proper validation and submit callbacks
  37. $form = i18n_string_translate_page_form_base($form, $langcode);
  38. // Build the form with one vertical tab per display
  39. $form['display'] = array(
  40. '#type' => 'vertical_tabs',
  41. );
  42. foreach ($groups as $display_id => $display_strings) {
  43. $form['groups'][$display_id] = array(
  44. '#type' => 'fieldset',
  45. '#title' => views_ui_get_display_label($view, $display_id),
  46. '#collapsible' => TRUE,
  47. '#collapsed' => TRUE,
  48. '#group' => 'display',
  49. );
  50. $form['groups'][$display_id]['strings'] = i18n_string_translate_page_form_strings($display_strings, $langcode);
  51. }
  52. $form['submit']['#weight'] = 1;
  53. $form['#submit'][] = 'i18nviews_translate_page_form_submit';
  54. return $form;
  55. }
  56. /**
  57. * Form submit callback for i18nviews_translate_page_form.
  58. */
  59. function i18nviews_translate_page_form_submit($form, $form_state) {
  60. views_invalidate_cache();
  61. }