Skip to content

Commit e97bb89

Browse files
committed
Support localized README
1 parent a3d55ac commit e97bb89

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

routers/web/repo/view.go

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -161,13 +161,34 @@ func renderDirectory(ctx *context.Context, treeLink string) {
161161
renderReadmeFile(ctx, readmeFile, readmeTreelink)
162162
}
163163

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+
164183
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
166185
// the last one is for a readme that doesn't
167186
// 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+
171192
for _, entry := range entries {
172193
if entry.IsDir() {
173194
lowerName := strings.ToLower(entry.Name())
@@ -225,7 +246,7 @@ func findReadmeFile(ctx *context.Context, entries git.Entries, treeLink string)
225246
}
226247
}
227248
if entry != nil && (entry.IsExecutable() || entry.IsRegular()) {
228-
readmeFiles[3] = &namedBlob{
249+
readmeFiles[extCount] = &namedBlob{
229250
name,
230251
isSymlink,
231252
entry.Blob(),

0 commit comments

Comments
 (0)