Allow to specify default language in filenames (#1233)
* Use default language if code is same as default * Add test for specifying default locale * Update docs to mention default languages
This commit is contained in:
parent
cb75334498
commit
944cba030e
|
@ -129,6 +129,11 @@ impl FileInfo {
|
||||||
// We can document that
|
// We can document that
|
||||||
let mut parts: Vec<String> = self.name.splitn(2, '.').map(|s| s.to_string()).collect();
|
let mut parts: Vec<String> = self.name.splitn(2, '.').map(|s| s.to_string()).collect();
|
||||||
|
|
||||||
|
// If language code is same as default language, go for default
|
||||||
|
if config.default_language == parts[1].as_str() {
|
||||||
|
return Ok(config.default_language.clone());
|
||||||
|
}
|
||||||
|
|
||||||
// The language code is not present in the config: typo or the user forgot to add it to the
|
// The language code is not present in the config: typo or the user forgot to add it to the
|
||||||
// config
|
// config
|
||||||
if !config.languages_codes().contains(&parts[1].as_ref()) {
|
if !config.languages_codes().contains(&parts[1].as_ref()) {
|
||||||
|
@ -189,6 +194,19 @@ mod tests {
|
||||||
assert_eq!(res.unwrap(), "fr");
|
assert_eq!(res.unwrap(), "fr");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn can_find_valid_language_with_default_locale() {
|
||||||
|
let mut config = Config::default();
|
||||||
|
config.languages.push(Language { code: String::from("fr"), feed: false, search: false });
|
||||||
|
let mut file = FileInfo::new_page(
|
||||||
|
&Path::new("/home/vincent/code/site/content/posts/tutorials/python.en.md"),
|
||||||
|
&PathBuf::new(),
|
||||||
|
);
|
||||||
|
let res = file.find_language(&config);
|
||||||
|
assert!(res.is_ok());
|
||||||
|
assert_eq!(res.unwrap(), config.default_language);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn can_find_valid_language_in_page_with_assets() {
|
fn can_find_valid_language_in_page_with_assets() {
|
||||||
let mut config = Config::default();
|
let mut config = Config::default();
|
||||||
|
|
|
@ -33,8 +33,8 @@ uses the filename to detect the language:
|
||||||
- `content/an-article.md`: this will be the default language
|
- `content/an-article.md`: this will be the default language
|
||||||
- `content/an-article.fr.md`: this will be in French
|
- `content/an-article.fr.md`: this will be in French
|
||||||
|
|
||||||
If the language code in the filename does not correspond to one of the languages configured,
|
If the language code in the filename does not correspond to one of the languages or
|
||||||
an error will be shown.
|
the default language configured, an error will be shown.
|
||||||
|
|
||||||
If your default language has an `_index.md` in a directory, you will need to add an `_index.{code}.md`
|
If your default language has an `_index.md` in a directory, you will need to add an `_index.{code}.md`
|
||||||
file with the desired front-matter options as there is no language fallback.
|
file with the desired front-matter options as there is no language fallback.
|
||||||
|
|
Loading…
Reference in a new issue