mirror of
https://github.com/SamyRai/tercul-backend.git
synced 2025-12-27 05:11:34 +00:00
This commit includes the following changes: - Refactored all data repositories in `internal/data/sql/` to use a consistent `sql` package and to align with the new `domain` models. - Fixed the GraphQL structure by moving the server creation logic from `internal/app` to `cmd/api`, which resolved an import cycle. - Corrected numerous incorrect import paths for packages like `graph`, `linguistics`, `syncjob`, and the legacy `models` package. - Resolved several package and function redeclaration errors. - Removed legacy migration code.
35 lines
1002 B
Go
35 lines
1002 B
Go
package linguistics
|
|
|
|
import (
|
|
lingua "github.com/pemistahl/lingua-go"
|
|
"strings"
|
|
)
|
|
|
|
// LinguaLanguageDetector implements LanguageDetector using lingua-go
|
|
type LinguaLanguageDetector struct {
|
|
detector lingua.LanguageDetector
|
|
}
|
|
|
|
// NewLinguaLanguageDetector builds a detector for all supported languages
|
|
func NewLinguaLanguageDetector() LanguageDetector {
|
|
det := lingua.NewLanguageDetectorBuilder().FromAllLanguages().Build()
|
|
return &LinguaLanguageDetector{detector: det}
|
|
}
|
|
|
|
// DetectLanguage returns a lowercase ISO 639-1 code if possible
|
|
func (l *LinguaLanguageDetector) DetectLanguage(text string) (string, error) {
|
|
lang, ok := l.detector.DetectLanguageOf(text)
|
|
if !ok {
|
|
return "", nil // Or an error if you prefer
|
|
}
|
|
// Prefer ISO 639-1 when available else fallback to ISO 639-3
|
|
if s := lang.IsoCode639_1().String(); s != "" {
|
|
return s, nil
|
|
}
|
|
if s := lang.IsoCode639_3().String(); s != "" {
|
|
return s, nil
|
|
}
|
|
// fallback to language name
|
|
return strings.ToLower(lang.String()), nil
|
|
}
|