16.7. Localizing Images
Problem
You want to display images that have text in them and have that text in a locale-appropriate language.
Solution
Make an image directory for each locale
you want to support, as well as a global image directory for images
that have no locale-specific information in them. Create copies of
each locale-specific image in the appropriate locale-specific
directory. Make sure that the images have the same filename in the
different directories. Instead of printing out image URLs directly,
use a wrapper function similar to the msg( )
function in Section 16.5 that prints out
locale-specific text.
Discussion
The img( )
wrapper function looks for a
locale-specific version of an image first, then a global one. If
neither are present, it prints a message to the error log:
$image_base_path = '/usr/local/www/images'; $image_base_url = '/images'; function img($f) { global $LANG; global $image_base_path; global $image_base_url; if (is_readable("$image_base_path/$LANG/$f")) { print "$image_base_url/$LANG/$f"; } elseif (is_readable("$image_base_path/global/$f")) { print "$image_base_url/global/$f"; } else { error_log("l10n error: LANG: $lang, image: '$f'"); } }
This function needs to know both the path to the image file in the
filesystem ($image_base_path
) and the path to the
image from the base URL of your site (/images).
It uses the first to test if the file can be read and the second to
construct an appropriate URL for the image.
A localized image must have the same ...
Get PHP Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.