2010-01-26 2 views
2

키 이름을 사용하고 주어진 언어를 기반으로 현지화 된 문자열을 반환하는 간단한 지역화 모듈을 만들려고합니다. 언어는 상수 중 하나이며 문자열 테이블을 포함하는 파이썬 파일에 매핑됩니다. 런타임에이 작업을 동적으로 수행하려고합니다. 아래는 나의 접근 방식이지만, GAE는 imp 모듈을 지원하지 않습니다. 이 작업을 수행 할 수있는 다른 방법이 있습니까?GAE에서 파일/모듈 이름으로 가져 오기

 
import logging 
import imp 

import localizable 

LANGUAGE_EN = "en" 
LANGUAGE_JP = "ja" 

class Localizer(object): 
    """ 
    Returns a localized string corresponding to unique keys 
    """ 
    @classmethod 
    def localize(cls, language = LANGUAGE_EN, key = None): 
     user_language = imp.load_source("localizable.%s" % language, "/") 
     if (user_language): 
      return user_language.Locale.localize(key) 
     else: 
      logging.error("Localizable file was not found") 
      return "" 

내가

답변

2

(내가 믿는) 쳤 모듈에 대한 대안은 GAE에서 사용할 수 있어야 등 지역화/en.py 언어 파일을 넣어 __import__()입니다. 실제로 '가져 오기'문이 실제 가져 오기를 호출하는 것입니다.

user_language = getattr(__import__('localizable.%s' % language), language) 

또는

user_language __import__('localizable.%s' % language, {}, globals(), ['']) 

은 ( __import__에 비어 있지 않은 네 번째 인수를 전달하는 대신에, 첫 번째 인수에 가장 오른쪽 모듈을 반환을 일으키는 가장 왼쪽에. 그것은 조금 해키 따라서 사람들은 두 번째 이상의 첫 번째 솔루션을 선호하는 경향이 있습니다.)

+0

첫 번째 솔루션은 완벽하게 작동했습니다. 감사드립니다. 나는 가능한 한 빨리 upvote 것입니다 .. (분명히 15 담당자가 필요합니다) – Morrowless

관련 문제