@@ -161,13 +161,34 @@ func renderDirectory(ctx *context.Context, treeLink string) {
161
161
renderReadmeFile (ctx , readmeFile , readmeTreelink )
162
162
}
163
163
164
+ // Note: This will always return lower-case strings
165
+ func localizedExtensions (ext string , languageCode string ) (localizedExts []string ) {
166
+ if len (languageCode ) < 1 {
167
+ return []string {ext }
168
+ }
169
+
170
+ lowerLangCode := "." + strings .ToLower (languageCode )
171
+
172
+ if strings .Contains (lowerLangCode , "-" ) {
173
+ underscoreLangCode := strings .ReplaceAll (lowerLangCode , "-" , "_" )
174
+ indexOfDash := strings .Index (lowerLangCode , "-" )
175
+ // e.g. [.zh-cn.md, .zh_cn.md, .zh.md, .md]
176
+ return []string {lowerLangCode + ext , underscoreLangCode + ext , lowerLangCode [:indexOfDash ] + ext , ext }
177
+ }
178
+
179
+ // e.g. [.en.md, .md]
180
+ return []string {lowerLangCode + ext , ext }
181
+ }
182
+
164
183
func findReadmeFile (ctx * context.Context , entries git.Entries , treeLink string ) (* namedBlob , string ) {
165
- // 3 for the extensions in exts[] in order
184
+ // 3 kinds of extensions in exts[] in order
166
185
// the last one is for a readme that doesn't
167
186
// strictly match an extension
168
- var readmeFiles [4 ]* namedBlob
169
- var docsEntries [3 ]* git.TreeEntry
170
- exts := []string {".md" , ".txt" , "" } // sorted by priority
187
+ exts := append (localizedExtensions (".md" , ctx .Language ()), ".txt" , "" ) // sorted by priority
188
+ extCount := len (exts )
189
+ readmeFiles := make ([]* namedBlob , extCount + 1 )
190
+ docsEntries := make ([]* git.TreeEntry , extCount )
191
+
171
192
for _ , entry := range entries {
172
193
if entry .IsDir () {
173
194
lowerName := strings .ToLower (entry .Name ())
@@ -225,7 +246,7 @@ func findReadmeFile(ctx *context.Context, entries git.Entries, treeLink string)
225
246
}
226
247
}
227
248
if entry != nil && (entry .IsExecutable () || entry .IsRegular ()) {
228
- readmeFiles [3 ] = & namedBlob {
249
+ readmeFiles [extCount ] = & namedBlob {
229
250
name ,
230
251
isSymlink ,
231
252
entry .Blob (),
0 commit comments