11use std:: path:: PathBuf ;
22
3+ use codes_iso_639:: part_1:: LanguageCode ;
4+
5+ fn detect_language ( content : & str ) -> String {
6+ let lang_code = match whichlang:: detect_language ( content) {
7+ whichlang:: Lang :: Ara => LanguageCode :: Ar ,
8+ whichlang:: Lang :: Cmn => LanguageCode :: Zh ,
9+ whichlang:: Lang :: Deu => LanguageCode :: De ,
10+ whichlang:: Lang :: Eng => LanguageCode :: En ,
11+ whichlang:: Lang :: Fra => LanguageCode :: Fr ,
12+ whichlang:: Lang :: Hin => LanguageCode :: Hi ,
13+ whichlang:: Lang :: Ita => LanguageCode :: It ,
14+ whichlang:: Lang :: Jpn => LanguageCode :: Ja ,
15+ whichlang:: Lang :: Kor => LanguageCode :: Ko ,
16+ whichlang:: Lang :: Nld => LanguageCode :: Nl ,
17+ whichlang:: Lang :: Por => LanguageCode :: Pt ,
18+ whichlang:: Lang :: Rus => LanguageCode :: Ru ,
19+ whichlang:: Lang :: Spa => LanguageCode :: Es ,
20+ whichlang:: Lang :: Swe => LanguageCode :: Sv ,
21+ whichlang:: Lang :: Tur => LanguageCode :: Tr ,
22+ whichlang:: Lang :: Vie => LanguageCode :: Vi ,
23+ } ;
24+ lang_code. code ( ) . to_string ( )
25+ }
26+
327#[ derive( Clone , serde:: Serialize , serde:: Deserialize , specta:: Type ) ]
428pub struct IndexRecord {
529 pub url : String ,
@@ -61,7 +85,6 @@ fn build_index_sync(pagefind_dir: PathBuf, records: Vec<IndexRecord>) -> Result<
6185 rt. block_on ( async {
6286 let options = PagefindServiceConfig :: builder ( )
6387 . keep_index_url ( true )
64- . force_language ( "en" . to_string ( ) )
6588 . build ( ) ;
6689
6790 let mut index = PagefindIndex :: new ( Some ( options) ) . map_err ( |e| crate :: Error :: Anyhow ( e) ) ?;
@@ -72,15 +95,9 @@ fn build_index_sync(pagefind_dir: PathBuf, records: Vec<IndexRecord>) -> Result<
7295 meta. insert ( "title" . to_string ( ) , t) ;
7396 }
7497
98+ let language = detect_language ( & record. content ) ;
7599 index
76- . add_custom_record (
77- record. url ,
78- record. content ,
79- "en" . to_string ( ) ,
80- Some ( meta) ,
81- None ,
82- None ,
83- )
100+ . add_custom_record ( record. url , record. content , language, Some ( meta) , None , None )
84101 . await
85102 . map_err ( |e| crate :: Error :: Anyhow ( e) ) ?;
86103 }
0 commit comments