4
struct fts_language_list;
6
enum fts_language_result {
7
/* Provided sample is too short. */
8
FTS_LANGUAGE_RESULT_SHORT,
9
/* Language is unknown or not in the provided list . */
10
FTS_LANGUAGE_RESULT_UNKNOWN,
12
FTS_LANGUAGE_RESULT_OK,
13
/* textcat library initialization failed. */
14
FTS_LANGUAGE_RESULT_ERROR
18
/* Two-letter language name lowercased, e.g. "en" */
21
ARRAY_DEFINE_TYPE(fts_language, const struct fts_language *);
23
/* Used for raw data that is indexed. This data shouldn't go through any
24
language-specific filters. */
25
extern const struct fts_language fts_language_data;
27
/* Find a specified language by name. This finds from the internal list of
28
supported languages. */
29
const struct fts_language *fts_language_find(const char *name);
31
int fts_language_list_init(const char *const *settings,
32
struct fts_language_list **list_r,
33
const char **error_r);
34
void fts_language_list_deinit(struct fts_language_list **list);
36
/* Add a language to the list of wanted languages. */
37
void fts_language_list_add(struct fts_language_list *list,
38
const struct fts_language *lang);
39
/* Add wanted languages from a space-separated list of language names.
40
Duplicates are ignored. Returns TRUE if ok, FALSE and unknown_name if an
41
unknown language was found from the list. */
42
bool fts_language_list_add_names(struct fts_language_list *list,
44
const char **unknown_name_r);
46
/* Return an array of all wanted languages. */
47
const ARRAY_TYPE(fts_language) *
48
fts_language_list_get_all(struct fts_language_list *list);
49
/* Returns the first wanted language (default language). */
50
const struct fts_language *
51
fts_language_list_get_first(struct fts_language_list *list);
53
/* If text was detected to be one of the languages in the list,
54
returns FTS_LANGUAGE_RESULT_OK and (a pointer to) the language (in
56
enum fts_language_result
57
fts_language_detect(struct fts_language_list *list,
58
const unsigned char *text, size_t size,
59
const struct fts_language **lang_r);