Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 4 additions & 91 deletions transifex_catalogs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
```
12 changes: 0 additions & 12 deletions transifex_catalogs/ar.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": "الدعم",
Expand Down
12 changes: 0 additions & 12 deletions transifex_catalogs/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
3 changes: 1 addition & 2 deletions transifex_catalogs/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
12 changes: 0 additions & 12 deletions transifex_catalogs/fa.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": "برنامه باگ بانتی",
Expand Down
89 changes: 89 additions & 0 deletions transifex_catalogs/main.go
Original file line number Diff line number Diff line change
@@ -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)
}
}
12 changes: 0 additions & 12 deletions transifex_catalogs/pl.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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ą.",
Expand All @@ -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?",
Expand Down
13 changes: 0 additions & 13 deletions transifex_catalogs/pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -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.",
Expand Down Expand Up @@ -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",
Expand Down
12 changes: 0 additions & 12 deletions transifex_catalogs/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -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赏金计划",
Expand Down