-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
73 lines (64 loc) · 3.01 KB
/
main.go
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
//go:generate go run generator/main.go
package translitkit
import (
"github.com/tassa-yoniso-manasi-karoto/translitkit/common"
// language-specific pkg must be initialized for their providers to be available
_ "github.com/tassa-yoniso-manasi-karoto/translitkit/lang/mul"
_ "github.com/tassa-yoniso-manasi-karoto/translitkit/lang/jpn"
_ "github.com/tassa-yoniso-manasi-karoto/translitkit/lang/tha"
// Indic: Aksharamukha
_ "github.com/tassa-yoniso-manasi-karoto/translitkit/lang/hin"
_ "github.com/tassa-yoniso-manasi-karoto/translitkit/lang/ben"
_ "github.com/tassa-yoniso-manasi-karoto/translitkit/lang/fas"
_ "github.com/tassa-yoniso-manasi-karoto/translitkit/lang/guj"
_ "github.com/tassa-yoniso-manasi-karoto/translitkit/lang/mar"
_ "github.com/tassa-yoniso-manasi-karoto/translitkit/lang/pan"
_ "github.com/tassa-yoniso-manasi-karoto/translitkit/lang/sin"
_ "github.com/tassa-yoniso-manasi-karoto/translitkit/lang/urd"
_ "github.com/tassa-yoniso-manasi-karoto/translitkit/lang/tam"
_ "github.com/tassa-yoniso-manasi-karoto/translitkit/lang/tel"
// Cyrillic: iuliia
_ "github.com/tassa-yoniso-manasi-karoto/translitkit/lang/rus"
_ "github.com/tassa-yoniso-manasi-karoto/translitkit/lang/uzb"
)
// DefaultModule returns a new Module configured with the default providers
// for the specified language. The language code can be in any ISO 639 format
// (639-1, 639-2/T, 639-2/B, or 639-3).
//
// Example:
//
// module, err := translitkit.DefaultModule("ja") // ISO 639-1
// module, err := translitkit.DefaultModule("jpn") // ISO 639-3
func DefaultModule(lang string) (*common.Module, error) {
return common.DefaultModule(lang)
}
// NewModule creates a Module for the specified language using named providers.
// The language code can be in any ISO 639 format.
// For a combined provider, specify one name.
// For separate providers, specify two names in the order: tokenizer, transliterator.
//
// Example:
//
// module, err := translitkit.NewModule("jpn", "ichiran") // combined provider
// module, err := translitkit.NewModule("jpn", "mecab", "kakasi") // separate providers
func NewModule(lang string, providerNames ...string) (*common.Module, error) {
return common.NewModule(lang, providerNames...)
}
// NeedsTokenization returns true if the given language doesn't use spaces
// to separate words and requires tokenization.
// The language code can be in any ISO 639 code format.
func NeedsTokenization(lang string) (bool, error) {
return common.NeedsTokenization(lang)
}
// NeedsTransliteration returns true if the given language doesn't use
// the roman script and requires transliteration.
// The language code can be in any ISO 639 code format.
func NeedsTransliteration(lang string) (bool, error) {
return common.NeedsTransliteration(lang)
}
// IsValidLanguage checks if the given language code is a valid ISO 639 code
// (in any format: 639-1, 639-2/T, 639-2/B, or 639-3).
// It returns the standardized ISO 639-3 code and true if valid.
func IsValidLanguage(lang string) (string, bool) {
return common.IsValidISO639(lang)
}