Right I'd already tried your first option of placing
$define_page = zen_get_file_directory(DIR_WS_LANGUAGES . $_SESSION['language'] . '/html_includes/', FILENAME_DEFINE_PAGE_2, 'false');
in pages/index/header_php.php or
in templates/MYTEMPLATE/templates/index_categories.php or in in templates/MYTEMPLATE/templates/tpl_index_default.php
The end result is that any text that was defined in includes/languages/english/html_includes/MYTEMPLATE/define_main_page.php disappears and is replaced by define_page_2.php
Also if I then go on to do something like:
<?php $define_page = zen_get_file_directory(DIR_WS_LANGUAGES . $_SESSION['language'] . '/html_includes/', FILENAME_DEFINE_PAGE_2, 'false'); ?><br />
<?php $define_page = zen_get_file_directory(DIR_WS_LANGUAGES . $_SESSION['language'] . '/html_includes/', FILENAME_DEFINE_PAGE_3, 'false'); ?><br />
<?php $define_page = zen_get_file_directory(DIR_WS_LANGUAGES . $_SESSION['language'] . '/html_includes/', FILENAME_DEFINE_PAGE_4, 'false'); ?>
it will only display FILENAME_DEFINE_PAGE_4 instead of all three.
I didn't try the more complex EZ Pages option as I gathered using page_defines might be much easier.