+ case MSG_ID:
+ id = strdup(val);
+ break;
+
+ case MSG_STR:
+ if (id && id[0] && val[0]) {
+ if (ctxt && ctxt[0] && prev_plural_num > -1)
+ snprintf(key, sizeof(key), "%s\1%s\2%d", ctxt, id, prev_plural_num);
+ else if (ctxt && ctxt[0])
+ snprintf(key, sizeof(key), "%s\1%s", ctxt, id);
+ else if (prev_plural_num > -1)
+ snprintf(key, sizeof(key), "%s\2%d", id, prev_plural_num);
+ else
+ snprintf(key, sizeof(key), "%s", id);
+
+ key_id = sfh_hash(key, strlen(key));
+ val_id = sfh_hash(val, strlen(val));
+
+ if (key_id != val_id) {
+ n_entries++;
+ array = realloc(array, n_entries * sizeof(lmo_entry_t));
+ entry = (lmo_entry_t *)array + n_entries - 1;