專利名稱:一種提供多語言支持的方法和裝置的制作方法
技術領域:
本發(fā)明涉及計算機軟件領域,更具體地,涉及一種提供多語言支持的方法和裝置。
背景技術:
國際化一直是軟件開發(fā)中比較重要的一個部分。所謂的軟件的國際化,實際上就是將軟件設計成可以適合多個國家的用戶使用,其中包括了一系列的措施,比如多語言的支持、不同國家用戶使用習慣的調(diào)整,等等。而在國際化的各個方向中,最常用的一個措施就是多語言的支持。目前,軟件中使用的多語言支持方案是將需要顯示文字的地方使用多語言指示符+文字別名來代替,然后在軟件中內(nèi)置多套語言包,每一套對應一種語言,語言包的大體格式即是文字別名映射到文字。軟件啟動時,檢測系統(tǒng)的語言環(huán)境,確定軟件需要使用的語言和對應的語言包,然后在運行時,一旦發(fā)現(xiàn)多語言指示符時,就到對應的語言包中,根據(jù)文字別名找到對應的文字進行顯示。比如,軟件需要顯示“專利”這兩個字時,會使用多語言指示符+文字別名來代替該文字,比如$ (STR_PATENT),這里,$ O是多語言指示符,而STR_PATENT是文字別名,軟件在中文環(huán)境下時,就會到中文語言包中找到STR_PATENT這個文字別名對應的文字“專利”,顯示查找到的“專利”,如果是英文環(huán)境,就會到英文語言包中找到STR_PATENT對應的文字“Patent”,顯示查找到的“Patent”。然而,該方案有如下缺點:當軟件中沒有用戶所需的語言包時,軟件就無法支持用戶所需的語言。因此,目前的方案無法實現(xiàn)讓軟件靈活地支持用戶所需的語言。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實施例的目的是提出一種提供多語言支持的方法和裝置,能夠讓軟件靈活地支持用戶所需的語言。為了達到上述目的,本發(fā)明實施例提出一種提供多語言支持的方法,包括以下步驟:攔截軟件的查找文字資源請求,所述查找文字資源請求中包括要查找的文字別名;根據(jù)所述文字別名,在預設的語言包中查找所述文字別名對應的文字;將查找到的文字返回給所述軟件。本發(fā)明實施例根據(jù)攔截的資源請求從預設的語言包中查找對應的文字,因此只要軟件采用查找資源的方式加載文字,無論軟件自身是否包含多種語言包,都可以使軟件支持所需的語目。作為上述技術方案的優(yōu)選,所述攔截軟件的查找文字資源請求的步驟包括:攔截軟件的查找資源請求;判斷所述查找資源請求是否是查找文字資源請求;當所述查找資源請求不是查找文字資源請求時,透傳所述查找資源請求。本方案僅處理文字請求,目的是為了防止惡意行為。
作為上述技術方案的優(yōu)選,在預設的語言包中查找所述文字別名對應的文字的步驟包括:判斷在預設的語言包中是否查找到所述文字別名對應的文字;當在預設的語言包中未查找到所述文字別名對應的文字時,透傳所述查找文字資源請求。本方案可以繼續(xù)系統(tǒng)原有的查找文字資源邏輯查找文字。作為上述技術方案的優(yōu)選,在預設的語言包中查找所述文字別名對應的文字的步驟包括:在存儲于預設位置的語言包中查找所述文字別名對應的文字。由于是使用存儲于預設位置的語言包,所以不需要根據(jù)當前的語言設置再進行查找對應的語言包,因此,可以使軟件支持任意的語言。作為上述技術方案的優(yōu)選,在預設的語言包中查找所述文字別名對應的文字的步驟包括:檢測軟件所處系統(tǒng)的語言環(huán)境;根據(jù)檢測出的語言環(huán)境從預設的語言包中選擇對應的語言包;在選擇的語言包中查找所述文字別名對應的文字。本方案根據(jù)軟件所處系統(tǒng)的語言環(huán)境選擇相應的語言包,不論軟件中是否自帶有該語言包,只要系統(tǒng)的語言環(huán)境支持,就可以使軟件支持該語言。作為上述技術方案的優(yōu)選,所述軟件為手持設備的多語言支持軟件,從而使手持設備中的多語言支持軟件也能靈活地支持多語言。本發(fā)明實施例還提出一種提供多語言支持的裝置,包括:攔截模塊,用于攔截軟件的查找文字資源請求,所述查找文字資源請求中包括要查找的文字別名;查找模塊,用于根據(jù)所述文字別名,在預設的語言包中查找所述文字別名對應的文字;返回模塊,用于將查找到的文字返回給所述軟件。作為上述技術方案的優(yōu)選,所述攔截模塊包括:攔截單元,用于攔截軟件的查找資源請求;第一判斷單元,用于判斷所述查找資源請求是否是查找文字資源請求;所述裝置還包括:透傳模塊,用于當所述查找資源請求不是查找文字資源請求時,透傳所述查找資源請求。作為上述技術方案的優(yōu)選,所述透傳模塊還用于:當在預設的語言包中未查找到所述文字別名對應的文字時,透傳所述查找文字資源請求。作為上述技術方案的優(yōu)選,所述查找模塊用于:在存儲于預設位置的語言包中查找所述文字別名對應的文字。作為上述技術方案的優(yōu)選,所述查找模塊包括:檢測單元,用于檢測軟件所處系統(tǒng)的語言環(huán)境;選擇單元,用于根據(jù)檢測出的語言環(huán)境從預設的語言包中選擇對應的語言包;查找單元,用于在選擇的語言包中查找所述文字別名對應的文字。本發(fā)明實施例的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在所寫的說明書、權利要求書、以及附圖中所特別指出的結構來實現(xiàn)和獲得。下面通過附圖和實施例,對本發(fā)明實施例的技術方案做進一步的詳細描述。
附圖用來提供對本發(fā)明實施例的進一步理解,并且構成說明書的一部分,與本發(fā)明的實施例一起用于解釋本發(fā)明,并不構成對本發(fā)明實施例的限制。在附圖中:圖1是本發(fā)明實施例中提供多語言支持的主要方法流程圖;圖2是本發(fā)明實施例中根據(jù)軟件所處系統(tǒng)的語言環(huán)境從預設的語言包中查找文字的方式所實現(xiàn)的提供多語言支持的方法流程圖;圖3是本發(fā)明實施例中直接從存儲于預設位置的語言包中查找文字的方式實現(xiàn)的提供多語言支持的方法流程;圖4是本發(fā)明實施例中提供多語言支持的裝置的主要結構示意圖;圖5是本發(fā)明實施例中提供多語言支持的裝置的具體結構示意圖。
具體實施例方式以下結合附圖對本發(fā)明的優(yōu)選實施例進行說明,應當理解,此處所描述的優(yōu)選實施例僅用于說明和解釋本發(fā)明實施例,并不用于限定本發(fā)明實施例。如圖1所示為本發(fā)明實施例中提供多語言支持的主要方法流程,包括:步驟SlOl:攔截軟件的查找文字資源請求,所述查找文字資源請求中包括要查找的文字別名。軟件例如是計算機中運行的多語言支持軟件,也可以是手持設備(例如手機、平板電腦等)中運行的多語言軟件。多語言支持軟件在運行時將會發(fā)送文字資源請求來查找某種語言環(huán)境下對應的文字。文字別名是指在文字在軟件代碼中的標識。軟件需要顯示文字時,通常會使用多語言指示符和文字別名來代替文字。比如軟件代碼中的$(STR_PATENT),其中,$()是多語言指示符,而STR_PATENT是文字PATENT的文字別名。步驟S102:根據(jù)所述文字別名,在預設的語言包中查找所述文字別名對應的文字。步驟S103:將查找到的文字返回給所述軟件。本發(fā)明實施例中的提供多語言支持的方法,根據(jù)攔截的資源請求從外部預設的語言包中查找對應的文字,因此只要軟件采用查找資源的方式加載文字,無論軟件自身是否包含多種語言包,都可以使軟件支持所需的語言。如圖2所示為本發(fā)明實施例中根據(jù)軟件所處系統(tǒng)的語言環(huán)境從預設的語言包中查找文字的方式所實現(xiàn)的提供多語言支持的方法流程,包括以下步驟:步驟S201:獲取軟件所在系統(tǒng)的語言環(huán)境。步驟S202:攔截軟件的查找資源請求。例如,在Android(—種基于Linux的自由及開放源代碼的操作系統(tǒng))系統(tǒng)中,軟件的資源請求是通過Resources類提供的getText、getValue、obtainAttributes等函數(shù)實現(xiàn)的。該步驟可以通過修改系統(tǒng)查找資源接口來實現(xiàn)(例如使用鉤子(hook))。步驟S203:判斷攔截的查找資源請求是否是查找文字資源請求,若是,執(zhí)行步驟S204,若否,執(zhí)行步驟S208。該步驟是為了防止惡意行為,因此遭攔截系統(tǒng)請求時,僅處理文字請求,而其他安全敏感的請求,如可執(zhí)行文件等,會直接返回,不做任何額外處理。例如,在Android系統(tǒng)中的軟件的資源請求中,getText是專門處理文字資源的函數(shù),因此,可以判斷資源請求是否是通過getText函數(shù)發(fā)出。步驟S204:獲取查找文字資源請求中攜帶的文字別名。步驟S205:判斷預設的外部位置是否存在語言環(huán)境對應的語言包,若是,執(zhí)行步驟S206,若否,執(zhí)行步驟S208。應當注意的是,上述步驟S201只要在步驟S205之前執(zhí)行即可,即在步驟S205之前獲得軟件所在系統(tǒng)的語言環(huán)境即可。步驟S206:判斷在語言包中是否查找到獲取的文字別名對應的文字,若是,執(zhí)行步驟S207 ;若否,執(zhí)行步驟S208。例如,在Android系統(tǒng)中,Android的軟件所使用的資源是以xml文件的方式進行組織的,文字資源一般定義在values目錄下的strings, xml中,內(nèi)容片段如下:〈string name =,,str_patent,,>Patent〈/string>如果想增加簡體中文的支持,再增加一個values-zh-rCN的目錄(即簡體中文語言包),里面同樣加上strings, xml文件,內(nèi)容片段如下:〈string name =,,str_patent,,> 專利 </string>這樣,通過文字別名“Str_patent”就可以在簡體中文的語言包中查找到相應的文字“專利”。應當注意的是,在本發(fā)明實施例中,無需軟件定義語言包的格式,由于采用的是攔截請求系統(tǒng)資源的方式,因此語言包的格式應和系統(tǒng)資源格式一致,從而避免不同軟件定義的語言包格式有所差異使得語言制作者學習成本很高的問題。步驟S207:將查找到的文字返回給軟件。步驟S208:透傳攔截的查找資源請求。透傳攔截的查找資源請求,使得軟件可以繼續(xù)系統(tǒng)原有的查找資源邏輯。在本實施例中,根據(jù)軟件所在系統(tǒng)支持的語言環(huán)境以及攔截的查找文字資源請求,查找相應的文字。因此,即使軟件中沒有用戶所需的語言包,也可以使軟件支持用戶所
需的語目。如圖3所示為本發(fā)明實施例中直接從存儲于預設位置的語言包中查找文字的方式實現(xiàn)的提供多語言支持的方法流程,包括以下步驟:步驟S301:攔截軟件的查找資源請求。例如,在Android(—種基于Linux的自由及開放源代碼的操作系統(tǒng))系統(tǒng)中,軟件的資源請求是通過Resources類提供的getText、getValue、obtainAttributes等函數(shù)實現(xiàn)的。該步驟通過修改系統(tǒng)的查找資源接口實現(xiàn),由于修改的是系統(tǒng)查找資源的統(tǒng)一接口,所以只要軟件采用查找資源的方式加載文字,無論軟件自身是否支持多語言,是否只有一種語言,是否支持該特定語言,都可以達到替換語言的效果。步驟S302:判斷攔截的查找資源請求是否是查找文字資源請求,若是,執(zhí)行步驟S303,若否,執(zhí)行步驟S307:例如,在Android系統(tǒng)中的軟件的資源請求中,getText是專門處理文字資源的函數(shù),因此,可以判斷資源請求是否是通過getText函數(shù)發(fā)出。步驟S303:獲取查找文字資源請求中攜帶的文字別名。步驟S304:判斷預設的外部位置是否存在語言包,若是,執(zhí)行步驟S305,若否,執(zhí)行步驟S307。步驟S305:判斷在語言包中是否查找到獲取的文字別名對應的文字,若是,執(zhí)行步驟S306 ;若否,執(zhí)行步驟S307。步驟S306:將查找到的文字返回給軟件。步驟S307:透傳攔截的查找資源請求。在本實施例中,根據(jù)攔截的查找文字資源請求在預設的語言包中查找相應的文字。因此,無論軟件所在系統(tǒng)處于何種語言環(huán)境,無論軟件中有沒有用戶所需的語言包,都可以使軟件支持用戶所需的語言。如圖4所示為本發(fā)明實施例中一種提供多語言支持的裝置,包括:攔截模塊401,用于攔截軟件的查找文字資源請求,所述查找文字資源請求中包括要查找的文字別名;查找模塊402,用于根據(jù)所述文字別名,在預設的語言包中查找所述文字別名對應的文字;返回模塊403,用于將查找到的文字返回給所述軟件。優(yōu)選地,攔截模塊401包括:攔截單元,用于攔截軟件的查找資源請求;判斷單元,用于判斷所述查找資源請求是否是查找文字資源請求。如圖5所示,所述裝置還包括:透傳模塊404,用于當所述查找資源請求不是查找文字資源時,透傳所述查找資源請求。優(yōu)選地,透傳模塊404還用于:當在預設的語言包中未查找到所述文字別名對應的文字時,透傳所述查找文字資源請求。優(yōu)選地,查找模塊402用于:在存儲于預設位置的語言包中查找所述文字別名對應的文字。優(yōu)選地,查找模塊402包括:檢測單元,用于檢測軟件所處系統(tǒng)的語言環(huán)境;選擇單元,用于根據(jù)檢測出的語言環(huán)境從預設的語言包中選擇對應的語言包;查找單元,用于在選擇的語言包中查找所述文字別名對應的文字。本領域內(nèi)的技術人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器和光學存儲器等)上實施的計算機程序產(chǎn)品的形式。本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權利要求
1.一種提供多語言支持的方法,其特征在于,包括: 攔截軟件的查找文字資源請求,所述查找文字資源請求中包括要查找的文字別名; 根據(jù)所述文字別名,在預設的語言包中查找所述文字別名對應的文字; 將查找到的文字返回給所述軟件。
2.根據(jù)權利要求1所述的方法,其特征在于,所述攔截軟件的查找文字資源請求的步驟包括: 攔截軟件的查找資源請求; 判斷所述查找資源請求是否是查找文字資源請求; 當所述查找資源請求不是查找文字資源請求時,透傳所述查找資源請求。
3.根據(jù)權利要求1所述的方法,其特征在于,在預設的語言包中查找所述文字別名對應的文字的步驟包括: 判斷在預設的語言包中是否查找到所述文字別名對應的文字; 當在預設的語言包中未查找到所述文字別名對應的文字時,透傳所述查找文字資源請求。
4.根據(jù)權利要求1所述的方法,其特征在于,在預設的語言包中查找所述文字別名對應的文字的步驟包括: 在存儲于預設位置的語言包中查找所述文字別名對應的文字。`
5.根據(jù)權利要求1所述的方法,其特征在于,在預設的語言包中查找所述文字別名對應的文字的步驟包括: 檢測軟件所處系統(tǒng)的語言環(huán)境; 根據(jù)檢測出的語言環(huán)境從預設的語言包中選擇對應的語言包; 在選擇的語言包中查找所述文字別名對應的文字。
6.根據(jù)權利要求1所述的方法,其特征在于,所述軟件為手持設備的多語言支持軟件。
7.一種提供多語言支持的裝置,其特征在于,包括: 攔截模塊,用于攔截軟件的查找文字資源請求,所述查找文字資源請求中包括要查找的文字別名; 查找模塊,用于根據(jù)所述文字別名,在預設的語言包中查找所述文字別名對應的文字; 返回模塊,用于將查找到的文字返回給所述軟件。
8.根據(jù)權利要求7所述的裝置,其特征在于,所述攔截模塊包括: 攔截單元,用于攔截軟件的查找資源請求; 第一判斷單元,用于判斷所述查找資源請求是否是查找文字資源請求; 所述裝置還包括: 透傳模塊,用于當所述查找資源請求不是查找文字資源請求時,透傳所述查找資源請求。
9.根據(jù)權利要求7所述的裝置,其特征在于,所述透傳模塊還用于:當在預設的語言包中未查找到所述文字別名對應的文字時,透傳所述查找文字資源請求。
10.根據(jù)權利要求7所述的裝置,其特征在于,所述查找模塊用于: 在存儲于預設位置的語言包中查找所述文字別名對應的文字。
11.根據(jù)權利要求7所述的裝置,其特征在于,所述查找模塊包括:檢測單元,用于檢測軟件所處系統(tǒng)的語言環(huán)境;選擇單元,用于根據(jù)檢測出的語言環(huán)境從預設的語言包中選擇對應的語言包;查找單元,用于在選擇的語言包中查找所述文字別名對應的文字。
全文摘要
本發(fā)明公開了一種提供多語言支持的方法和裝置,其中,方法包括以下步驟攔截軟件的查找文字資源請求,所述查找文字資源請求中包括要查找的文字別名;根據(jù)所述文字別名,在預設的語言包中查找所述文字別名對應的文字;將查找到的文字返回給所述軟件。本發(fā)明實施例根據(jù)攔截的資源請求從預設的語言包中查找對應的文字,因此只要軟件采用查找資源的方式加載文字,無論軟件自身是否包含多種語言包,都可以使軟件支持所需的語言。
文檔編號G06F17/30GK103164246SQ20131009243
公開日2013年6月19日 申請日期2013年3月21日 優(yōu)先權日2013年3月21日
發(fā)明者董紅光, 李偉星 申請人:北京小米科技有限責任公司