1
나는 범주 목록을 가지고 있으므로 로캘별로 언어를 변경할 수 있도록 i18n과 함께 사용하고 싶습니다.webapp2에서 i18n으로 전역 설정을 할 수 있습니까?
from webapp2_extras import i18n
category_list = {}
category_list['bikes'] = {'value': i18n.gettext('CATEGORY_BIKES')}
class CategoriesHandler(BaseHandler):
"""List categories"""
def get(self, **kwargs):
"""List all categories"""
self.response.write(self.json_output(category_list))
그리고 오류가 발생합니다 :
내 파이썬 코드는 다음과 같습니다 I 클래스의 get 메소드로 category_list를 이동하는 경우에는
File "/Users/user/Developer/GAE/project/CategoriesHandler.py", line 11, in <module>
category_list['bikes'] = {'value': i18n.gettext('CATEGORY_BIKES')}
File "/Users/user/Developer/GAE/project/webapp2_extras/i18n.py", line 713, in gettext
return get_i18n().gettext(string, **variables)
File "/Users/user/Developer/GAE/project/webapp2_extras/i18n.py", line 894, in get_i18n
request = request or webapp2.get_request()
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2/webapp2.py", line 1720, in get_request
assert getattr(_local, 'request', None) is not None, _get_request_error
AssertionError: Request global variable is not set.
을, 모든 것이 괜찮습니다.
class CategoriesHandler(BaseHandler):
"""List categories"""
def get(self, **kwargs):
"""List all categories"""
category_list = {}
category_list['bikes'] = {'value': i18n.gettext('CATEGORY_BIKES')}
self.response.write(self.json_output(category_list))
pass
문제는 코드를 쉽게 유지할 수 있도록 category_list를 다른 설정 파일로 분리해야한다는 것입니다. 이 문제를 해결할 방법이 있습니까? 감사!
훌륭한 답변입니다! 그건 내 문제를 해결 ..하지만 또 다른 문제가 있어요 : json.dumps()를 사용하여 category_list JSON 개체로 변환 할 필요가 있지만 ugettext_lazy 사용 후 category_list 더 이상 JSON serializable 될 것 같습니다. 이 문제를 해결할 방법이 있습니까? 어쨌든 귀하의 답변 주셔서 감사합니다! –
기본 인수로 json.dumps에 전달하는 defaultencode 메소드를 작성하십시오. 객체에 전달 된 객체가 게으른 번역 객체인지 확인하고, 번역이 제대로 연결되면 str (객체) 또는 unicode (객체)를 수행합니다. – tesdal
완벽한 답변! 나는 노력했다. 그리고 그것은 마술처럼 작동한다! 감사! –