Вы могли бы рассмотреть возможность использования подхода, используемого iGoogle, который имеет набор специальных переменных __BIDI_START_EDGE__, __BIDI_END_EDGE__, __BIDI_DIR__, and __BIDI_REVERSE_DIR__
. Вы пишете свои правила CSS как обычно, за исключением того, что вместо написания чего-то вроде margin-left вы пишете margin-__BIDI_START_EDGE__
. Затем напишите немного кода на стороне сервера, который принимает таблицу стилей и направление (ltr или rtl) и заполняет переменные значениями left, right, ltr и rtl в зависимости от ситуации.
Это не позволяет вам обслуживать один файл, но он достаточно надежен и имеет то преимущество, что все, что вы не хотите переворачивать, может быть написано буквально «влево» или «вправо».
(См. это электронное письмо из списка рассылки OpenAjaxIDE , в котором говорится, что «эксперты по локализации IBM подробно рассмотрели возможности BIDI в OpenSocial» и предлагает принять их для проекта OpenAjax.)