2012-10-17 35 views
1

我注意到一個RC文件可以有重複的資源(即相同的資源標識符),只要它們在不同的語言部分。RC文件中不同語言部分的相同資源標識符,爲什麼可能?

例如,該編譯沒有在我的RC文件中的錯誤:

#define IDS_STRING_001 10001 

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT 
STRINGTABLE 
BEGIN 
    IDS_STRING_001 "English" 
END 

LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT 
STRINGTABLE 
BEGIN 
    IDS_STRING_001 "Japanese" 
END 

爲什麼這可能嗎?它旨在用作替代方式的本地化,而不是使用單獨的DLL來保存本地化資源?

+0

是的,因爲字符串資源首先按語言標識,然後按ID /名稱標識。這樣,無論加載哪種語言資源,您的代碼都可以使用相同的ID /名稱加載字符串,因此不必爲每種語言編寫不同的代碼。 –

回答

2

是的,這是爲您的應用程序做本地化的一種方法。從this link

這種做法背後的主要思想是從源代碼中分離出來的資源,建立資源節約型,僅包含所有的所有目標語言的本地化資源DLL。 RC文件在不同的語言標籤下定義了相同資源ID的多個副本。在下面的示例中,爲法語和英語定義了字符串ID IDS_ENUMSTRTEST。

相關問題