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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access