diff --git a/transifex_catalogs/README.md b/transifex_catalogs/README.md index bab9e9c2..6599dfca 100644 --- a/transifex_catalogs/README.md +++ b/transifex_catalogs/README.md @@ -16,96 +16,9 @@ ## Validating translation files -Below is some example code to review existing translation files for errors. -This code only checks for keys in non-base files which do not exist in the base -file, but it can easily be expanded to add other checks. +In this directory is a go file which checks translation files for strings in +i18n files which do not exist in the base English file. -```go -package main - -import ( - "encoding/json" - "fmt" - "io" - "log" - "os" - "path/filepath" -) - -type txFile map[string]string - -func (file txFile) containsKey(key string) bool { - _, ok := file[key] - return ok -} - -func main() { - log.SetFlags(0) - - const dir = "transifex_catalogs" - const baseLang = "en.json" - - var baseFile txFile - files := make(map[string]txFile) - - err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { - if err != nil { - return fmt.Errorf("filepath.Walk err: %v", err) - } - - if info.IsDir() || - info.Name() == "translator.html" { - return nil - } - - file, err := os.Open(path) - if err != nil { - return fmt.Errorf("os.Open err: %v", err) - } - defer file.Close() - - bytes, err := io.ReadAll(file) - if err != nil { - return fmt.Errorf("io.ReadAll err: %v", err) - } - - var parsed txFile - err = json.Unmarshal(bytes, &parsed) - if err != nil { - return fmt.Errorf("json.Unmarshal err: %v", err) - } - - if info.Name() == baseLang { - baseFile = parsed - } else { - files[info.Name()] = parsed - } - - return nil - }) - if err != nil { - log.Printf("filepath.Walk err: %v", err) - os.Exit(1) - } - - log.Printf("Loaded %d files", len(files)) - log.Printf("Base lang contains %d strings", len(baseFile)) - - var fail bool - - // Check for unnecessary keys in non-base files. - for fileName, file := range files { - for key := range file { - if !baseFile.containsKey(key) { - log.Printf("%s: unnecessary key: %q", - fileName, key) - fail = true - } - } - } - - if fail { - os.Exit(1) - } -} +```no-highlight +go run main.go ``` diff --git a/transifex_catalogs/ar.json b/transifex_catalogs/ar.json index 43e79685..2a96a149 100644 --- a/transifex_catalogs/ar.json +++ b/transifex_catalogs/ar.json @@ -83,18 +83,6 @@ "landing_privacy_text": "لا أحد يجب أن يعرف ما تفعله بأموالك غيرك.", "landing_privacy_link1": "تعلم كيفية خلط وحدات ديكريد الخاصة بك", "landing_privacy_link2": "عرض مشاركة خصوصية ديكريد", - "landing_treasury_headline": "الخزينة", - "landing_treasury_text": "القوة لمواصلة البناء.", - "landing_treasury_link1": "المساهمة و التحول إلى متعاقد", - "landing_resolve_headline": "التسوية", - "landing_resolve_text": "تم دمج حل النزاعات حتى يتمكن أفراد المجتمع من العيش في وئام.", - "landing_resolve_link1": "التصويت بإثبات الحصة", - "landing_freedom_headline": "الحرية", - "landing_freedom_text": "لا أحد يستطيع أن يمنعك من نقل أموالك.", - "landing_freedom_link1": "اقرأ دستور ديكريد", - "landing_insights_headline": "رؤى قوية", - "landing_insights_text": "تصور كيف يتناسب كل شيء معًا بشكل مثالي.", - "landing_insights_link1": "قم بزيارة مستكشف كتلة dcrdata", "community_community_title": "منصات المجتمع", "community_publications_title": "المنشورات", "community_support_title": "الدعم", diff --git a/transifex_catalogs/de.json b/transifex_catalogs/de.json index da7a86ef..eedea865 100644 --- a/transifex_catalogs/de.json +++ b/transifex_catalogs/de.json @@ -47,28 +47,16 @@ "general_javascript_warning": "JavaScript erforderlich", "general_javascript_warning_description": "Leider funktioniert diese Website ohne JavaScript nicht ordnungsgemäß.", "home_download_wallet": "Wallet download", - "landing_freedom_headline": "Freiheit", - "landing_freedom_link1": "Lies die Decred-Verfassung", - "landing_freedom_text": "Niemand kann dich daran hindern dein Geld zu bewegen.", - "landing_insights_headline": "Vielfältige Einblicke", - "landing_insights_link1": "Besuche den dcrdata Block Explorer", - "landing_insights_text": "Sieh dir an wie alle Teile zusammenhängen.", "landing_opener": "Geld verbessert", "landing_privacy_headline": "Privatsphäre", "landing_privacy_link1": "Lernen jetzt deine Decred zu mixen", "landing_privacy_link2": "Diagramm über die Beteiligungsrate am Decred Mixer zur Steigerung der Privatsphäre", "landing_privacy_text": "Niemand außer dir sollte wissen was du mit deinem Geld machst.", - "landing_resolve_headline": "Klärung", - "landing_resolve_link1": "Proof of Stake Abstimmung", - "landing_resolve_text": "Formelle Mittel zur Konfliktlösung integriert damit die Herde in Harmonie leben kann.", "landing_seemore": "Mehr dazu", "landing_sovereignty_headline": "Souveränität", "landing_sovereignty_link1": "Decred Governance", "landing_sovereignty_link2": "Übersicht der Konsensänderungen", "landing_sovereignty_text": "Du bestimmst die Regeln und sicherst ihre Einhaltung.", - "landing_treasury_headline": "Projektkasse", - "landing_treasury_link1": "Beitragen und zum Kontraktor werden", - "landing_treasury_text": "Die Mittel um sich immer weiter zu entwickeln.", "nav_become_contributor": "Werde ein Mitwirkender", "nav_brand_resources": "Markenressourcen", "nav_bugbounty": "Bug Bounty", diff --git a/transifex_catalogs/es.json b/transifex_catalogs/es.json index baa079cf..b4456d97 100644 --- a/transifex_catalogs/es.json +++ b/transifex_catalogs/es.json @@ -50,6 +50,5 @@ "Page not found": "Página no encontrada", "Back to home page": "Volver al inicio", "nav_bugbounty": "Bug Bounty", - "landing_seemore": "Ver más", - "landing_treasury_link1": "Colaborar y Convertirse en Contratista" + "landing_seemore": "Ver más" } diff --git a/transifex_catalogs/fa.json b/transifex_catalogs/fa.json index 1eea5789..8e310752 100644 --- a/transifex_catalogs/fa.json +++ b/transifex_catalogs/fa.json @@ -48,28 +48,16 @@ "general_javascript_warning": "جاوااسکریپت لازم است.", "general_javascript_warning_description": "متأسفیم، اما این وب‌سایت بدون فعال بودن جاوااسکریپت درست کار نمی‌کند.", "home_download_wallet": "دانلود کیف پول", - "landing_freedom_headline": "آزادی", - "landing_freedom_link1": "قانون اساسی دیکْرِد(Decred) را بخوانید", - "landing_freedom_text": "هیچکسی نمیتواند جلوی انتقال پولت را بگیرد.", - "landing_insights_headline": "نگرش های قدرتمند", - "landing_insights_link1": "بازدید از Dcrdata Block Explorer", - "landing_insights_text": "تصور کن چطور اجزا در پیوند با هم قرار میگیرند.", "landing_opener": "پول تکامل یافت", "landing_privacy_headline": "حریم خصوصی", "landing_privacy_link1": "یاد بگیر و دیکْرِدت را میکس کن", "landing_privacy_link2": "مشاهده مشارکت در حریم خصوصی دیکْرِد(Decred)", "landing_privacy_text": "هیچکس به جز خودت نباید بداند که با پولت چکار میکنی.", - "landing_resolve_headline": "رفع مناقشه", - "landing_resolve_link1": "رای دادن از نوع (POS)", - "landing_resolve_text": "روش حل اختلاف تعبیه شده تا مردم در هماهنگی با هم زندگی کنند.", "landing_seemore": "بیشتر", "landing_sovereignty_headline": "حاکمیت", "landing_sovereignty_link1": "اداره حکومت دیکْرِد(Decred)", "landing_sovereignty_link2": "تغییرات در اجماع را دنبال کنید", "landing_sovereignty_text": "شما قوانین را تعیین می کنید و اجرا می کنید.", - "landing_treasury_headline": "خزانه (Treasury)", - "landing_treasury_link1": "مشارکت و تبدیل شدن به کارگزار", - "landing_treasury_text": "توانایی توسعه پایدار.", "nav_become_contributor": "یک مشارکت کننده شوید", "nav_brand_resources": "منابع نام تجاری", "nav_bugbounty": "برنامه باگ بانتی", diff --git a/transifex_catalogs/main.go b/transifex_catalogs/main.go new file mode 100644 index 00000000..ad799ebb --- /dev/null +++ b/transifex_catalogs/main.go @@ -0,0 +1,89 @@ +package main + +import ( + "encoding/json" + "fmt" + "io" + "log" + "os" + "path/filepath" +) + +type txFile map[string]string + +func (file txFile) containsKey(key string) bool { + _, ok := file[key] + return ok +} + +func main() { + log.SetFlags(0) + + const dir = "." + const baseLang = "en.json" + + var baseFile txFile + files := make(map[string]txFile) + + err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { + if err != nil { + return fmt.Errorf("filepath.Walk err: %v", err) + } + + if info.IsDir() || + info.Name() == "translator.html" || + info.Name() == "main.go" || + info.Name() == "README.md" { + return nil + } + + file, err := os.Open(path) + if err != nil { + return fmt.Errorf("os.Open err: %v", err) + } + defer file.Close() + + bytes, err := io.ReadAll(file) + if err != nil { + return fmt.Errorf("io.ReadAll err: %v", err) + } + + var parsed txFile + err = json.Unmarshal(bytes, &parsed) + if err != nil { + return fmt.Errorf("json.Unmarshal err: %v", err) + } + + if info.Name() == baseLang { + baseFile = parsed + } else { + files[info.Name()] = parsed + } + + return nil + }) + if err != nil { + log.Printf("filepath.Walk err: %v", err) + os.Exit(1) + } + + log.Printf("Loaded %d files", len(files)) + log.Printf("en.json contains %d strings", len(baseFile)) + + var fail bool + + // Check for unnecessary keys in non-base files. + for fileName, file := range files { + for key := range file { + if !baseFile.containsKey(key) { + log.Printf("%s: unnecessary key: %q", + fileName, key) + fail = true + } + } + } + + if fail { + os.Exit(1) + } +} diff --git a/transifex_catalogs/pl.json b/transifex_catalogs/pl.json index efd9397c..cb75a821 100644 --- a/transifex_catalogs/pl.json +++ b/transifex_catalogs/pl.json @@ -69,12 +69,6 @@ "landing_feature7": "Sieć Lightning", "landing_feature8": "DEX", "landing_features": "Cechy projektu", - "landing_freedom_headline": "Wolność", - "landing_freedom_link1": "Przeczytaj Konstytucję Decred", - "landing_freedom_text": "Nikt nie przeszkodzi Ci w rozporządzaniu Twoimi pieniędzmi.", - "landing_insights_headline": "Przenikliwe obserwacje", - "landing_insights_link1": "Otwórz eksplorator bloków dcrdata", - "landing_insights_text": "Wyobraź sobie, jak wszystko łączy się w całość.", "landing_intro": "Decred to kryptowaluta zaprojektowana z myślą o aktualizacji funkcjonalności tak, aby ewoluowała przez cały czas w oparciu o decyzje interesariuszy projektu", "landing_lightning_headline": "Skalowalność dzięki sieci Lightning Network", "landing_lightning_link1": "Więcej o Bison Relay, bezpiecznym komunikatorze opartym na Lightning Network", @@ -93,9 +87,6 @@ "landing_proposals_headline": "Propozycje", "landing_proposals_link1": "Wyświetl platformę składania propozycji", "landing_proposals_text": "Platforma składania propozycji Decred jest siłą decyzyjną stojącą za DAO Decred. Każdy może złożyć propozycję i uzyskać finansowanie na jej przeprowadzenie ze Skarbca. Wszystkie propozycje są oznakowane czasowo, odporne na cenzurę i muszą zostać zatwierdzone przez interesariuszy.", - "landing_resolve_headline": "Rozwiązanie", - "landing_resolve_link1": "Głosowanie proof of stake", - "landing_resolve_text": "Wbudowany system rozwiązywania sporów, aby stado mogło żyć w zgodzie.", "landing_security_headline": "Dwuwarstwowe bezpieczeństwo", "landing_security_link1": "Kalkulator kosztów ataku", "landing_security_text": "Hybrydowy system konsensusu Decred jest znacznie trudniejszy do zaatakowania metodą 51% niż czyste systemy PoW lub PoS. Do tej pory Decred nigdy nie został zaatakowany tą metodą.", @@ -105,9 +96,6 @@ "landing_sovereignty_link2": "Śledź zmiany w zasadach konsensusu", "landing_sovereignty_text": "To Ty ustalasz i egzekwujesz zasady.", "landing_stats": "Statystyki w pigułce", - "landing_treasury_headline": "Skarbiec", - "landing_treasury_link1": "Współtworzenie projektu i zostanie wykonawcą", - "landing_treasury_text": "Moc ciągłego rozwoju i budowania.", "landing_why_text1": "Decred został stworzony przez zespół programistów Bitcoin przy współpracy z legendarnym deweloperem Monero, tacotime.", "landing_why_text2": "Ich wizja była jasna: wzmocnić pozycję posiadaczy monet poprzez stworzenie unikatowego hybrydowego systemu wydobywczego proof-of-work i proof-of-stake, który połączy bezpieczeństwo, zrównoważy rozwój, decentralizację i udział użytkowników w procesie decyzyjnym dot. rozwoju.", "landing_why_title": "Dlaczego Decred?", diff --git a/transifex_catalogs/pt.json b/transifex_catalogs/pt.json index 687bf241..f2902ad7 100644 --- a/transifex_catalogs/pt.json +++ b/transifex_catalogs/pt.json @@ -47,7 +47,6 @@ "downloads_category_third_party_wallets": "Carteiras de terceiros", "downloads_category_hardware_wallets": "Hard Wallets", "downloads_app_decrediton": "Carteira GUI para Windows, macOS e Linux.", - "downloads_app_godcr": "Uma carteira GUI SPV leve, construída puramente em Go.", "downloads_app_commandline": "Um instalador/atualizador automático multiplataforma para os aplicativos de linha de comando.", "downloads_app_mobilewallets": "Carteiras mobile Decred para Android e IOS.", "downloads_app_exodus": "Exodus é uma aplicação user-friendly tudo em um. Para proteger, gerir e trocar ativos na blockchain.", @@ -83,18 +82,6 @@ "landing_privacy_text": "Ninguém além de você mesmo deveria saber o que faz com o seu dinheiro.", "landing_privacy_link1": "Aprenda a mixar suas Decreds", "landing_privacy_link2": "Veja a participação na privacidade na Decred", - "landing_treasury_headline": "Tesouraria", - "landing_treasury_text": "O poder para continuar construindo.", - "landing_treasury_link1": "Contribuindo e tornando-se um Contratante", - "landing_resolve_headline": "Resolva", - "landing_resolve_text": "Resolução de disputas incluída para que a horda possa viver em harmonia.", - "landing_resolve_link1": "Votação Proof of Stake", - "landing_freedom_headline": "Liberdade", - "landing_freedom_text": "Ninguem pode te coibir de mover seu dinheiro.", - "landing_freedom_link1": "Leia a Constituição da Decred", - "landing_insights_headline": "Insights Poderosos", - "landing_insights_text": "Veja como todas as peças se encaixam.", - "landing_insights_link1": "Visite Block Explorer dcrdata", "community_community_title": "Plataformas da comunidade", "community_publications_title": "Publications", "community_support_title": "Suporte", diff --git a/transifex_catalogs/zh.json b/transifex_catalogs/zh.json index c896afd2..e27e4223 100644 --- a/transifex_catalogs/zh.json +++ b/transifex_catalogs/zh.json @@ -47,28 +47,16 @@ "general_javascript_warning": "JavaScript请求", "general_javascript_warning_description": "很抱歉,此网站在没有JavaScript的情况下不能正常工作。", "home_download_wallet": "下载钱包", - "landing_freedom_headline": "自由", - "landing_freedom_link1": "阅读Decred宪法", - "landing_freedom_text": "没有任何人可以阻止你转移资金。", - "landing_insights_headline": "强大洞察力", - "landing_insights_link1": "访问 dcrdata 区块浏览器", - "landing_insights_text": "想象一下所有的一切是如何完美结合在一起的。", "landing_opener": "金钱革命", "landing_privacy_headline": "隐私", "landing_privacy_link1": "学习怎样混合你拥有的Decred", "landing_privacy_link2": "查看Decred网络的参与度", "landing_privacy_text": "没有人应该知道你用钱做了什么。", - "landing_resolve_headline": "争议", - "landing_resolve_link1": "权益证明投票", - "landing_resolve_text": "内置治理模型使争议得以解决。", "landing_seemore": "查看更多", "landing_sovereignty_headline": "主权", "landing_sovereignty_link1": "Decred 治理", "landing_sovereignty_link2": "追踪共识变更", "landing_sovereignty_text": "由你制定规则并执行它们。", - "landing_treasury_headline": "国库", - "landing_treasury_link1": "做出贡献和成为贡献者", - "landing_treasury_text": "持续构建的力量源泉。", "nav_become_contributor": "成为贡献者", "nav_brand_resources": "视觉工具", "nav_bugbounty": "Bug赏金计划",