Как мне работать с текстовыми изображениями, которые должны показывать переведенную версию? - PullRequest
1 голос
/ 14 ноября 2010

Как лучше всего работать с i18n и текстовыми изображениями?

У меня есть несколько изображений, в которых есть текст, который нужно заменить на правильную версию для каждого языка. у меня есть "header.gif" с текстом на английском языке, а затем еще один "header.gif" с текстом на французском языке.

что проще всего сказать

if my image exists in the current language:
    show the image
else
    show the english image

Я думаю, что промежуточное ПО может проверять каждый тег img, проверять, доступно ли запрошенное изображение на текущем языке, и если да, измените тег img, чтобы показать его, если нет, то нет.

Другой моей идеей было просто заключить ссылку на изображение в тег {% trans ... %} и изменить URL в .po файле

или по-другому?

Ответы [ 3 ]

1 голос
/ 15 ноября 2010

Я создал промежуточное программное обеспечение для анализа html перед его обработкой для проверки изображений в папке locale внутри папки мультимедиа.Если они существуют, измените тег src, если нет, оставьте его как есть:

def process_response(self, request, response):
    # check if we should try this here
    if self.inject_media(request, response):
        media_url = settings.MEDIA_URL
        lang = translation.get_language_from_request(request)
        media_root = settings.MEDIA_ROOT
        string = smart_unicode(response.content)
        no_case = string.lower()
        find = "%s[a-z0-9\.\_\/]+" % media_url
        pattern = re.compile(find)
        matches = pattern.findall(no_case)
        base_path = "%slocale/%s/" % (media_root, lang)
        for m in matches:
            p = m.replace(media_url, base_path)
            if os.path.isfile(p):
                url = m.replace(media_url, "%slocale/%s/" % (media_url, lang))           
                string = string.replace(m, url)

        response.content = string
    return response
1 голос
/ 15 ноября 2010

Вы также можете создавать подпапки в вашем медиа-каталоге

/ static / img / es_ES / static / img / en_EN

И отправлять правильное изображение в зависимости от требуемого языка с помощью {%media_url%} пользовательский тег шаблона.

1 голос
/ 14 ноября 2010

Вы можете попытаться решить эту проблему, определив некоторые модели для изображений:

class ImageTitle(models.Model):
    title = models.CharField('Title', max_length = 100) 

class Image(models.Model):
    title = models.ForeignKey(ImageTitle)
    image = models.ImageField('Image')
    language = models.CharField('Language', max_length = 100) 

Определите некоторые функции для рендеринга изображения в соответствии с настройками языка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...