(rawTranslation []byte)
| 93 | } |
| 94 | |
| 95 | func generateTranslationFunc(rawTranslation []byte) (TranslateFunc, error) { |
| 96 | var entries []TranslationEntry |
| 97 | err := json.Unmarshal(rawTranslation, &entries) |
| 98 | if err != nil { |
| 99 | return nil, err |
| 100 | } |
| 101 | |
| 102 | translations := map[string]string{} |
| 103 | for _, entry := range entries { |
| 104 | translations[entry.ID] = entry.Translation |
| 105 | } |
| 106 | |
| 107 | return func(translationID string, args ...interface{}) string { |
| 108 | translated := translations[translationID] |
| 109 | if translated == "" { |
| 110 | translated = translationID |
| 111 | } |
| 112 | |
| 113 | var keys interface{} |
| 114 | if len(args) > 0 { |
| 115 | keys = args[0] |
| 116 | } |
| 117 | |
| 118 | var buffer bytes.Buffer |
| 119 | formattedTemplate := template.Must(template.New("Display Text").Parse(translated)) |
| 120 | err := formattedTemplate.Execute(&buffer, keys) |
| 121 | if err != nil { |
| 122 | log.WithField("translationID", translationID).Errorln("executing template:", err) |
| 123 | } |
| 124 | |
| 125 | return buffer.String() |
| 126 | }, nil |
| 127 | } |
| 128 | |
| 129 | func loadAssetFromResources(locale string) ([]byte, error) { |
| 130 | assetName := fmt.Sprintf(assetPath, locale) |
no test coverage detected