As requested by a few forum members, here's the script I wrote to fix the issue with some names not being displayed for incoming calls or SMS messages.

It's an Applescript script (OSX-only) which will prompt you for the local prefix and the international prefix for mobiles in your area (in Australia all mobiles start with 04, so that's the local prefix, and the international code for Australia is +61 so I entered +614 as the international mobile prefix)

The script will then go through all the CURRENTLY SELECTED contacts in your address book and find any which have only the local or the international version of the number, and will add whichever is missing.

The end result is that each contact in your address book has two mobile entries, one with the local version of the incoming number (which the iPhone seems to use for incoming calls) and one including the international prefix for your country (which the iPhone seems to use for SMS). Result is that now I can always see who the caller/SMS sender was.

Use it at your own risk - I highly recommend that you back up your address book first, and test it out by selecting only 1 "test" contact before you select all and run it over your entire phonebook. It's worked fine for me using the parameters I stated above for Australian mobiles.

The script is non-compiled so just double click it and it will open in the script editor in OSX and you can see the code for yourself before running it. Then just open Address book, select whichever contacts you want to use and then hit RUN in script editor.

LINK HERE: Applescript Address book script for iPhone-friendly mobile contacts

Hope this can help some of you out