File size: 1,569 Bytes
e4a10af
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import { StringEncoding } from "iconv-corefoundation";
import Context from "./Context";
import Labels from "./Labels";
export declare class NoSuchLanguageError extends Error {
    lang: LangSpecs;
    constructor(lang: LangSpecs);
}
export declare abstract class Language {
    static byTag: {
        [langTag: string]: Language | undefined;
    };
    static byID: Array<Language | undefined>;
    static add(lang: Language): void;
    static bySpec(lang: LangSpecs, context?: Context): Language[];
    abstract charset: StringEncoding;
    abstract doubleByteCharset: boolean;
    abstract englishName: string;
    abstract labels?: Labels;
    abstract languageID: number;
    abstract langTags: string[];
    abstract localizedName: string;
    toString(): string;
}
export default Language;
export declare type LangSpec = string | number;
export declare type LangSpecs = LangSpec | LangSpec[];
export interface Localization {
    lang: LangSpecs;
}
declare namespace indexByLanguage {
    interface Options<T, U> {
        filter?(object: T): boolean;
        map?(object: T, lang: Language): U | undefined;
        onCollisions?(languageIDs: Set<number>): void;
    }
}
declare function indexByLanguage<T extends Localization>(objects: Iterable<T>, options?: indexByLanguage.Options<T, T> & {
    map?: never;
}): Map<number, T>;
declare function indexByLanguage<T extends Localization, U>(objects: Iterable<T>, options: indexByLanguage.Options<T, U> & {
    map(object: T, lang: Language): U;
}): Map<number, Exclude<U, undefined>>;
export { indexByLanguage };