usage(1);
pool = pool_create();
+
+#if 0
+ {
+ const char *langs[] = {"de_DE", "de", "en"};
+ pool_set_languages(pool, langs, sizeof(langs)/sizeof(*langs));
+ }
+#endif
+
#ifdef FEDORA
pool->obsoleteusescolors = 1;
#endif
}
else
{
- const char *sum = solvable_lookup_str_lang(s, SOLVABLE_SUMMARY, "de");
+#if 1
+ const char *sum = solvable_lookup_str_lang(s, SOLVABLE_SUMMARY, "de", 1);
+#else
+ const char *sum = solvable_lookup_str_poollang(s, SOLVABLE_SUMMARY);
+#endif
printf(" - %s [%s]\n", solvable2str(pool, s), s->repo->name);
if (sum)
printf(" %s\n", sum);
unsigned int solvable_lookup_num(Solvable *s, Id keyname, unsigned int notfound);
const char *solvable_lookup_str(Solvable *s, Id keyname);
const char *solvable_lookup_str_poollang(Solvable *s, Id keyname);
-const char *solvable_lookup_str_lang(Solvable *s, Id keyname, const char *lang);
+const char *solvable_lookup_str_lang(Solvable *s, Id keyname, const char *lang, int usebase);
int solvable_lookup_bool(Solvable *s, Id keyname);
int solvable_lookup_void(Solvable *s, Id keyname);
char * solvable_get_location(Solvable *s, unsigned int *medianrp);
}
static const char *
-solvable_lookup_str_base(Solvable *s, Id keyname, Id basekeyname)
+solvable_lookup_str_base(Solvable *s, Id keyname, Id basekeyname, int usebase)
{
Pool *pool;
const char *str, *basestr;
/* search for a solvable with same name and same base that has the
* translation */
if (!pool->whatprovides)
- return basestr;
+ return usebase ? basestr : 0;
/* we do this in two passes, first same vendor, then all other vendors */
for (pass = 0; pass < 2; pass++)
{
return str;
}
}
- return basestr;
+ return usebase ? basestr : 0;
}
const char *
for (i = 0; i < pool->nlanguages; i++, row++)
{
if (!*row)
- {
- char *p;
- const char *kn;
-
- kn = id2str(pool, keyname);
- p = sat_malloc(strlen(kn) + strlen(pool->languages[i]) + 2);
- sprintf(p, "%s:%s", kn, pool->languages[i]);
- *row = str2id(pool, p, 1);
- sat_free(p);
- }
- str = solvable_lookup_str_base(s, *row, keyname);
+ *row = pool_id2langid(pool, keyname, pool->languages[i], 1);
+ str = solvable_lookup_str_base(s, *row, keyname, 0);
if (str)
return str;
}
}
const char *
-solvable_lookup_str_lang(Solvable *s, Id keyname, const char *lang)
+solvable_lookup_str_lang(Solvable *s, Id keyname, const char *lang, int usebase)
{
if (s->repo)
{
- const char *str;
Id id = pool_id2langid(s->repo->pool, keyname, lang, 0);
- if (id && (str = solvable_lookup_str_base(s, id, keyname)) != 0)
- return str;
+ if (id)
+ return solvable_lookup_str_base(s, id, keyname, usebase);
+ if (!usebase)
+ return 0;
}
return solvable_lookup_str(s, keyname);
}