Try to load resource-embedded catalog from application. Should fix #8037.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42950 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Adrien Destugues
2011-10-29 14:35:55 +00:00
parent eab1b0e87e
commit 92bae21ab7
+23 -14
View File
@@ -65,20 +65,29 @@ DefaultCatalog::DefaultCatalog(const char *signature, const char *language,
: :
BHashMapCatalog(signature, language, fingerprint) BHashMapCatalog(signature, language, fingerprint)
{ {
// give highest priority to catalog living in sub-folder of app's folder: status_t status;
app_info appInfo; app_info appInfo;
be_app->GetAppInfo(&appInfo); be_app->GetAppInfo(&appInfo);
node_ref nref;
nref.device = appInfo.ref.device; // give highest priority to catalog embedded as resource in application
nref.node = appInfo.ref.directory; // executable:
BDirectory appDir(&nref); status = ReadFromResource(&appInfo.ref);
BString catalogName("locale/");
catalogName << kCatFolder // search for catalog living in sub-folder of app's folder:
<< "/" << fSignature if (status != B_OK) {
<< "/" << fLanguageName node_ref nref;
<< kCatExtension; nref.device = appInfo.ref.device;
BPath catalogPath(&appDir, catalogName.String()); nref.node = appInfo.ref.directory;
status_t status = ReadFromFile(catalogPath.Path()); BDirectory appDir(&nref);
BString catalogName("locale/");
catalogName << kCatFolder
<< "/" << fSignature
<< "/" << fLanguageName
<< kCatExtension;
BPath catalogPath(&appDir, catalogName.String());
status = ReadFromFile(catalogPath.Path());
}
if (status != B_OK) { if (status != B_OK) {
// search in data folders // search in data folders
@@ -92,8 +101,8 @@ DefaultCatalog::DefaultCatalog(const char *signature, const char *language,
for (size_t i = 0; i < sizeof(which) / sizeof(which[0]); i++) { for (size_t i = 0; i < sizeof(which) / sizeof(which[0]); i++) {
BPath path; BPath path;
if (find_directory(which[i], &path) == B_OK) { if (find_directory(which[i], &path) == B_OK) {
catalogName = BString(path.Path()) BString catalogName(path.Path());
<< "/locale/" << kCatFolder catalogName << "/locale/" << kCatFolder
<< "/" << fSignature << "/" << fSignature
<< "/" << fLanguageName << "/" << fLanguageName
<< kCatExtension; << kCatExtension;