2012-06-26 51 views
2

我嘗試將OSQA(django + python)本地化爲俄語。我可以用locale-folder翻譯很多字符串。但是在OSQA中,一些字符串是硬編碼的(用簡單的文本代碼)。如何用python中的俄文文本替換英文硬編碼的字符串?

我嘗試簡單地將英文文本替換爲俄文,但出現錯誤。

例如:

class WordpressAuthContext(ConsumerTemplateContext): 
    mode = 'SMALLICON' 
    type = 'SIMPLE_FORM' 
    simple_form_context = { 
     'your_what': 'Wordpress blog name' 
    } 
    weight = 270 
    human_name = 'Wordpress' 
    icon = '/media/images/openid/wordpress.png' 

在這段代碼我需要在俄羅斯的文本替換「WordPress的博客名稱」。

我嘗試用unicode \uXXXX字符替換英文字符,但在網頁上我會在原始視圖\uXXXX中看到這些字符。

那我試試這個代碼:

'your_what': 'Wordpress blog name'.encode('utf-8') 

而且這工作太。

我該怎麼辦?

+0

只需在代碼的第二部分發表評論: 您無法對str進行編碼,因爲它已經是編碼數據。當你有一個unicode對象並且想將它存儲在一個文件(.html這裏)時,你必須選擇表示每個字符的方式:utf-8,iso-8859-1,latin-1,已經選擇了哪一個,你必須通過調用encode('utf-8')'來編碼unicode對象。在這個例子中,你展示了一個'str'對象,而不是一個unicode。 然後使用decode('utf-8')再次從str移動到unicode。 – AlbertFerras

回答

2

嘗試:

simple_form_context = { 
    'your_what': u'whätévèr wéird chars you [email protected]ñt to ûse' 
} 

我真的不知道,如果Django是準備通過所有的框架來處理Unicode字符串,但值得一試。

我不認爲它會準備處理字節字符串(就像使用.encode()生成的字符串),所以忘記了這一點。

+0

感謝您的回答,但這不是工作。網頁顯示字符串,帶有u-前綴,如\ u0412 \ u0430 \ u0448 \ u0435 \ u0438 \ u043C \ u044F .... – user1436788

+0

檢查[Django的國際化和本地化文檔](https://docs.djangoproject.com/en的/ dev /主題/國際化/) – KurzedMetal