Browse Source

script, gui: Silence useless warnings in translation script

GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/4034
LGTM: AudriusButkevicius
Simon Frei 8 years ago
parent
commit
88dfd634e5
2 changed files with 18 additions and 2 deletions
  1. 1 1
      gui/default/syncthing/core/aboutModalView.html
  2. 17 1
      script/translate.go

+ 1 - 1
gui/default/syncthing/core/aboutModalView.html

@@ -18,7 +18,7 @@ Jakob Borg, Audrius Butkevicius, Alexander Graf, Anderson Mesquita, Antony Male,
     <hr/>
 
     <p translate>Syncthing includes the following software or portions thereof:</p>
-    <ul class="list-unstyled two-columns">
+    <ul class="list-unstyled two-columns" id="copyright-notices">
       <li><a href="http://getbootstrap.com/">Bootstrap</a>, Copyright &copy; 2011-2016 Twitter, Inc.</li>
       <li><a href="https://angularjs.org/">AngularJS</a>, Copyright &copy; 2010-2016 Google, Inc.</li>
       <li><a href="https://github.com/bkaradzic/go-lz4">bkaradzic/go-lz4</a>, Copyright &copy; 2011-2012 Branimir Karadzic, 2013 Damian Gryski.</li>

+ 17 - 1
script/translate.go

@@ -22,16 +22,30 @@ import (
 var trans = make(map[string]string)
 var attrRe = regexp.MustCompile(`\{\{'([^']+)'\s+\|\s+translate\}\}`)
 
+// exceptions to the untranslated text warning
+var noStringRe = regexp.MustCompile(
+	`^((\W*\{\{.*?\}\} ?.?\W*)+(\.stignore)?|[^a-zA-Z]+.?[^a-zA-Z]*|Twitter|JS\W?|DEV|https?://\S+)$`)
+
+// exceptions to the untranslated text warning specific to aboutModalView.html
+var aboutRe = regexp.MustCompile(`^([^/]+/[^/]+|(The Go Pro|Font Awesome ).+)$`)
+
 func generalNode(n *html.Node, filename string) {
 	translate := false
 	if n.Type == html.ElementNode {
 		if n.Data == "translate" { // for <translate>Text</translate>
 			translate = true
+		} else if n.Data == "style" {
+			return
 		} else {
 			for _, a := range n.Attr {
 				if a.Key == "translate" {
 					translate = true
 					break
+				} else if a.Key == "id" && (a.Val == "contributor-list" ||
+					a.Val == "copyright-notices") {
+					// Don't translate a list of names and
+					// copyright notices of other projects
+					return
 				} else {
 					if matches := attrRe.FindStringSubmatch(a.Val); len(matches) == 2 {
 						translation(matches[1])
@@ -41,7 +55,9 @@ func generalNode(n *html.Node, filename string) {
 		}
 	} else if n.Type == html.TextNode {
 		v := strings.TrimSpace(n.Data)
-		if len(v) > 1 && !(strings.HasPrefix(v, "{{") && strings.HasSuffix(v, "}}")) {
+		if len(v) > 1 && !noStringRe.MatchString(v) &&
+			!(filename == "aboutModalView.html" && aboutRe.MatchString(v)) &&
+			!(filename == "logbar.html" && (v == "warn" || v == "errors")) {
 			log.Println("Untranslated text node (" + filename + "):")
 			log.Print("\t" + v)
 		}