1
- use crate :: i18n:: SUPPORTED_LOCALES ;
2
- use crate :: render:: RenderCtx ;
1
+ use crate :: render:: { RenderCtx , render_redirect} ;
3
2
4
3
pub static PAGE_REDIRECTS : & [ ( & str , & str ) ] = & [
5
4
// Pre-2018 website pages
@@ -74,13 +73,6 @@ static EXTERNAL_REDIRECTS: &[(&str, &str)] = &[
74
73
( "sponsors" , "https://foundation.rust-lang.org/members/" ) ,
75
74
] ;
76
75
77
- // Translations present on www.rust-lang.org before the 2018 redesign. If an equivalent translation
78
- // is present in the current codebase it will be migrated automatically.
79
- static PRE_2018_LOCALES : & [ & str ] = & [
80
- "de-DE" , "en-US" , "es-ES" , "fr-FR" , "id-ID" , "it-IT" , "ja-JP" , "ko-KR" , "pl-PL" , "pt-BR" ,
81
- "ru-RU" , "sv-SE" , "vi-VN" ,
82
- ] ;
83
-
84
76
pub fn create_redirects ( ctx : & RenderCtx ) -> anyhow:: Result < ( ) > {
85
77
// Static file redirects, no need to support languages
86
78
// We cannot really make non-HTML redirects easily, so we just duplicate the file contents
@@ -89,63 +81,13 @@ pub fn create_redirects(ctx: &RenderCtx) -> anyhow::Result<()> {
89
81
ctx. copy_asset_file ( dst, src) ?;
90
82
}
91
83
92
- // if let Some((_, dest)) = STATIC_FILES_REDIRECTS.iter().find(|(src, _)| src == &path) {
93
- // return Some(Redirect::permanent(*dest));
94
- // }
95
- //
96
- // let (locale, path) = if let Some((first, rest)) = path.split_once('/') {
97
- // if SUPPORTED_LOCALES.contains(&first) {
98
- // (Locale::Present(first), rest)
99
- // // After the 2018 website redesign some of the locales were removed and some were
100
- // // renamed (removing the country code). This handles both cases, either calculating the
101
- // // renamed locale or marking the locale as "specified but missing", which triggers a
102
- // // temporary redirect instead of a permanent redirect.
103
- // } else if PRE_2018_LOCALES.contains(&first) {
104
- // if let Some(locale) = convert_locale_from_pre_2018(first) {
105
- // (Locale::Present(locale), rest)
106
- // } else {
107
- // (Locale::SpecifiedButMissing, rest)
108
- // }
109
- // } else {
110
- // (Locale::NotSpecified, path.as_str())
111
- // }
112
- // } else if PRE_2018_LOCALES.contains(&path.as_str()) {
113
- // // If the whole path is a pre-2018 locale handle it as a localized index page.
114
- // if let Some(locale) = convert_locale_from_pre_2018(&path) {
115
- // (Locale::Present(locale), "")
116
- // } else {
117
- // (Locale::SpecifiedButMissing, "")
118
- // }
119
- // } else {
120
- // (Locale::NotSpecified, path.as_str())
121
- // };
122
- //
123
- // if let Some((_, dest)) = EXTERNAL_REDIRECTS.iter().find(|(src, _)| *src == path) {
124
- // Some(Redirect::permanent(*dest))
125
- // } else if let Some((_, dest)) = PAGE_REDIRECTS.iter().find(|(src, _)| *src == path) {
126
- // let dest = format!("/{dest}");
127
- // match locale {
128
- // Locale::Present("en-US") | Locale::NotSpecified => Some(Redirect::permanent(dest)),
129
- // Locale::Present(locale) => Some(Redirect::permanent(format!("/{locale}{dest}"))),
130
- // Locale::SpecifiedButMissing => Some(Redirect::temporary(dest)),
131
- // }
132
- // } else {
133
- // None
134
- // }
135
- Ok ( ( ) )
136
- }
84
+ for ( src, dst) in EXTERNAL_REDIRECTS {
85
+ render_redirect ( ctx, src, dst) ?;
86
+ }
137
87
138
- fn convert_locale_from_pre_2018 ( pre_2018 : & str ) -> Option < & str > {
139
- if let Some ( language) = pre_2018. split ( '-' ) . next ( ) {
140
- if SUPPORTED_LOCALES . contains ( & language) {
141
- return Some ( language) ;
142
- }
88
+ for ( src, dst) in PAGE_REDIRECTS {
89
+ render_redirect ( ctx, src, dst) ?;
143
90
}
144
- None
145
- }
146
91
147
- enum Locale < ' a > {
148
- Present ( & ' a str ) ,
149
- SpecifiedButMissing ,
150
- NotSpecified ,
92
+ Ok ( ( ) )
151
93
}
0 commit comments