Optimize the multilanguage build process

Work In Progress!

This commit makes a rework of the build and rebuild process to better suit a multi-site setup.

This also includes a complete overhaul of the site tests. Previous these were a messy mix that
were testing just small parts of the build chain, some of it testing code-paths not even used in
"real life". Now all tests that depends on a built site follows the same and real production code path.

See #2309
Closes #2211
Closes #477
Closes #1744
This commit is contained in:
Bjørn Erik Pedersen
2016-07-28 09:30:58 +02:00
parent f023dfd763
commit 708bc78770
35 changed files with 1264 additions and 991 deletions

View File

@@ -45,6 +45,8 @@ func (l Languages) Swap(i, j int) { l[i], l[j] = l[j], l[i] }
type Multilingual struct {
Languages Languages
DefaultLang *Language
langMap map[string]*Language
langMapInit sync.Once
}
@@ -60,7 +62,7 @@ func (ml *Multilingual) Language(lang string) *Language {
}
func (ml *Multilingual) enabled() bool {
return len(ml.Languages) > 0
return len(ml.Languages) > 1
}
func (l *Language) Params() map[string]interface{} {
@@ -98,16 +100,6 @@ func (l *Language) Get(key string) interface{} {
return viper.Get(key)
}
// TODO(bep) multilingo move this to a constructor.
func (s *Site) SetMultilingualConfig(currentLang *Language, languages Languages) {
ml := &Multilingual{
Languages: languages,
}
viper.Set("Multilingual", ml.enabled())
s.Multilingual = ml
}
func (s *Site) multilingualEnabled() bool {
return s.Multilingual != nil && s.Multilingual.enabled()
}
@@ -118,5 +110,5 @@ func (s *Site) currentLanguageString() string {
}
func (s *Site) currentLanguage() *Language {
return s.Lang
return s.Language
}