optimize performance of i18n translatable listener

Instead of using file_put_contents() or touch() I use fopen/ftruncate to gain heaps of
performance. I beleive this is due to ftruncate only changing the header of the file.
touch() is probably slow due to it doing alot of sanity checks. I'll do a more in depth
analysis of this problem if it ever crops up again.