
The best way to do this is with a plugin.
Tutorial on creating a plugin skeleton
All the strings that a user sees should be in the /languages directory or in a plugin's languages directory (/mod/<plugin name>/languages). This is done so that it is easy to change what language Elgg uses. For more information on this see the developer documentation on Internationalisation
To find the string use grep or a text editor that provides searching through files to locate the string. (A good text editor for Windows is Notepad++) Let's say we want to change the string "Add friend" to "Make a new friend". The grep command to find this string would be grep -r "Add friend" *. Using Notepad++, you would use the "Find in files" command. You would search for the string, set the filter to *.php, set the directory to the base directory of Elgg, and make sure it searches all subdirectories. You might want to set it to be case sensitive also.
You should locate the string "Add friend" in /languages/en.php. You should see something like this in the file:
'friend:add' => "Add friend",
This means every time Elgg sees friend:add it replaces it with "Add friend". We want to change the definition of friend:add.
To override this definition, we will add a languages file to the plugin that we built in the first step.
/mod/<your plugin name>/languages
<?php $english = array( 'friend:add' => 'Make a new friend', ); add_translation("en",$english); ?>
Make sure that you do not have any spaces or newlines outside the <?php ?>.
You're done now and should be able to enable the plugin and see the change. If you are override the language of a plugin, make sure your plugin is loaded after the one you are trying to modify. The loading order is determined in the Tools Administration page of the admin section. As you find more things that you'd like to change, you can keep adding them to this plugin.