diff --git a/public/content/translations/de/contributing/adding-staking-products/index.md b/public/content/translations/de/contributing/adding-staking-products/index.md index 98cc62a2b1c..2da3bca5fee 100644 --- a/public/content/translations/de/contributing/adding-staking-products/index.md +++ b/public/content/translations/de/contributing/adding-staking-products/index.md @@ -119,7 +119,7 @@ Für [Staking-as-a-Service-Listings](/staking/saas/) (d. h. delegierter Node-Bet #### Staking-Pool {#staking-pool} -Für [Staking-Services im Pool](/Staking/pools/): +Für [Staking-Services im Pool](/staking/pools/): **Wie hoch ist die Mindest-ETH, die für einen Einsatz erforderlich ist?** diff --git a/public/content/translations/de/developers/docs/scaling/index.md b/public/content/translations/de/developers/docs/scaling/index.md index 0bafa5539ce..4914d0036f1 100644 --- a/public/content/translations/de/developers/docs/scaling/index.md +++ b/public/content/translations/de/developers/docs/scaling/index.md @@ -56,14 +56,14 @@ Rollups führen Transaktionen außerhalb von Layer-1 aus, und die Daten werden d Es gibt zwei Arten von Rollups mit verschiedenen Sicherheitsmodellen: -- **Optimistische Rollups**: geht davon aus, dass Transaktionen standardmäßig gültig sind, und führt nur im Falle einer Anfechtung Berechnungen über einen [**Betrugsnachweis**](/glossary/#fraud-proof) durch. [Mehr über Optimistische Rollups](/Developers/Docs/Scaling/Optimistic-Rollups/). -- **Zero-Knowledge Rollups**: Führt die Berechnung außerhalb der Kette durch und reicht einen [**Gültigkeitsnachweis**](/glossary/#validity-proof) an die Kette ein. [Mehr zu Zero-Knowledge Rollups](/Developers/Docs/Scaling/Zk-Rollups/). +- **Optimistische Rollups**: geht davon aus, dass Transaktionen standardmäßig gültig sind, und führt nur im Falle einer Anfechtung Berechnungen über einen [**Betrugsnachweis**](/glossary/#fraud-proof) durch. [Mehr über Optimistische Rollups](/developers/docs/scaling/optimistic-rollups/). +- **Zero-Knowledge Rollups**: Führt die Berechnung außerhalb der Kette durch und reicht einen [**Gültigkeitsnachweis**](/glossary/#validity-proof) an die Kette ein. [Mehr zu Zero-Knowledge Rollups](/developers/docs/scaling/zk-rollups/). #### Zustandskanäle {#channels} Zustandskanäle nutzen Multisig-Verträge, um den Teilnehmenden die Möglichkeit zu geben, schnell und frei Transaktionen außerhalb der Kette durchzuführen und diese dann über das Mainnet abzurechnen. Dadurch werden Netzwerküberlastungen, Gebühren und Verzögerungen auf ein Minimum reduziert. Die beiden Arten von Kanälen sind derzeit Zustandskanäle und Zahlungskanäle. -Erfahren Sie mehr über [Zustandskanäle](/Developers/Docs/Scaling/State-Channels/). +Erfahren Sie mehr über [Zustandskanäle](/developers/docs/scaling/state-channels/). ### Seitenketten {#sidechains} @@ -75,7 +75,7 @@ Erfahren Sie mehr über [Seitenketten](/developers/docs/scaling/sidechains/). Eine Plasmakette ist eine separate Blockchain, die an der Ethereum-Blockchain verankert ist und Betrugsnachweise (wie [Optimistische Rollups](/developers/docs/scaling/optimistic-rollups/)) verwendet, um Streitigkeiten zu schlichten. -Erfahren Sie mehr über [Plasma](/Developers/Docs/Scaling/Plasma/). +Erfahren Sie mehr über [Plasma](/developers/docs/scaling/plasma/). ### Validium {#validium} diff --git a/public/content/translations/de/developers/docs/standards/index.md b/public/content/translations/de/developers/docs/standards/index.md index 97e94db4bfd..8747eb3e5be 100644 --- a/public/content/translations/de/developers/docs/standards/index.md +++ b/public/content/translations/de/developers/docs/standards/index.md @@ -7,7 +7,7 @@ incomplete: true ## Standards-Übersicht {#standards-overview} -Die Ethereum-Community hat viele Standards angenommen, die dazu beitragen, Projekte (wie [Ethereum-Clients](/Developers/Docs/Nodes-and-Clients/) und Wallets) über alle Implementierungen hinweg interoperabel zu halten. Sie sorgen dafür, dass Smart Contracts und dApps kompatibel bleiben. +Die Ethereum-Community hat viele Standards angenommen, die dazu beitragen, Projekte (wie [Ethereum-Clients](/developers/docs/nodes-and-clients/) und Wallets) über alle Implementierungen hinweg interoperabel zu halten. Sie sorgen dafür, dass Smart Contracts und dApps kompatibel bleiben. Normalerweise werden diese als [Ethereum Improvement Proposals](/eips/) (EIPs) eingeführt, die von Community-Mitgliedern über einen [Standardprozess](https://eips.ethereum.org/EIPS/eip-1) diskutiert werden. @@ -29,11 +29,11 @@ Bestimmte EIPs beziehen sich auf Anwendungs-Level-Standards (z. B. ein Standard ### Token-Standards {#token-standards} - [ERC-20](/developers/docs/standards/tokens/erc-20/) - Eine Standardschnittstelle für fungible (austauschbare) Token, wie Stimm-Token, Staking-Token oder virtuelle Währungen. -- [ERC-721](/Developers/Docs/Standards/Tokens/erc-721/) - Eine Standardschnittstelle für nicht-fungible Token, wie eine Urkunde für ein Kunstwerk oder ein Lied. -- [ERC-777](/Developers/Docs/Standards/Tokens/erc-777/) - Ein Token-Standard zur Verbesserung von ERC-20. -- [ERC-1155](/Developers/Docs/Standards/Tokens/erc-1155/) - Ein Token-Standard, der sowohl fungible als auch nicht-fungible Werte enthalten kann. +- [ERC-721](/developers/docs/standards/tokens/erc-721/) - Eine Standardschnittstelle für nicht-fungible Token, wie eine Urkunde für ein Kunstwerk oder ein Lied. +- [ERC-777](/developers/docs/standards/tokens/erc-777/) - Ein Token-Standard zur Verbesserung von ERC-20. +- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - Ein Token-Standard, der sowohl fungible als auch nicht-fungible Werte enthalten kann. -Erfahre mehr über [Token-Standards](/Developers/Docs/Standards/Tokens/). +Erfahre mehr über [Token-Standards](/developers/docs/standards/tokens/). ## Weiterführende Informationen {#further-reading} diff --git a/public/content/translations/es/developers/docs/smart-contracts/deploying/index.md b/public/content/translations/es/developers/docs/smart-contracts/deploying/index.md index 833d907ff5c..e27bc1433ec 100644 --- a/public/content/translations/es/developers/docs/smart-contracts/deploying/index.md +++ b/public/content/translations/es/developers/docs/smart-contracts/deploying/index.md @@ -20,7 +20,7 @@ Finalmente, necesitará compilar su contrato antes de implementarlo, así que as ### Lo que necesitarás {#what-youll-need} -- El bytecode de su contrato: se genera mediante la [compilación](/devElopers/docs/smart-contracts/compiling/). +- El bytecode de su contrato: se genera mediante la [compilación](/developers/docs/smart-contracts/compiling/). - Ether para gas: Tú pondrás tu límite de gas como cualquier otra transacción; por eso, debes tener en cuenta que la implementación de un contrato inteligente de Ethereum necesitará mucho más gas que una transferencia simple de ETH. - un script o complemento de implementación - acceso a un [nodo de Ethereum](/developers/docs/nodes-and-clients/), ya sea ejecutando el suyo propio, conectándose a un nodo público o mediante una clave de API usando un [servicio de nodo](/developers/docs/nodes-and-clients/nodes-as-a-service/) diff --git a/public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md index d2f000e9aeb..f82e76217a1 100644 --- a/public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md +++ b/public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md @@ -16,7 +16,7 @@ Entonces, ¿ha oído hablar acerca de ese tal Ethereum y está listo para indaga ## Prerrequisitos (fáciles) {#soft-prerequisites} -Esta entrada pretende ser accesible a un amplio abanico de desarrolladores. [Se incluirán herramientas de Python](/desarrolladores/docs/programming-languages/python/), pero solamente para conducir las ideas, no pasa nada si no es desarrollador de Python. Sin embargo, sí que voy a hacer algunas suposiciones sobre lo que ya sabe, para que podamos explorar rápidamente las partes específicas de Ethereum. +Esta entrada pretende ser accesible a un amplio abanico de desarrolladores. [Se incluirán herramientas de Python](/developers/docs/programming-languages/python/), pero solamente para conducir las ideas, no pasa nada si no es desarrollador de Python. Sin embargo, sí que voy a hacer algunas suposiciones sobre lo que ya sabe, para que podamos explorar rápidamente las partes específicas de Ethereum. Supuestos: diff --git a/public/content/translations/it/developers/docs/programming-languages/javascript/index.md b/public/content/translations/it/developers/docs/programming-languages/javascript/index.md index e6e69f0248c..81a821658c4 100644 --- a/public/content/translations/it/developers/docs/programming-languages/javascript/index.md +++ b/public/content/translations/it/developers/docs/programming-languages/javascript/index.md @@ -32,7 +32,7 @@ Di più sui [contratti intelligenti](/developers/docs/smart-contracts/). ### La macchina virtuale Ethereum {#the-ethereum-virtual-machine} -Esiste un'implementazione JavaScript della [macchina virtuale di Ethereum](/en/developers/docs/evm/), che supporta le regole più recenti relative alle diramazioni della rete. Le regole relative alle diramazioni si riferiscono alle modifiche apportate alla macchina virtuale di Ethereum (EVM) a seguito di upgrade pianificati. +Esiste un'implementazione JavaScript della [macchina virtuale di Ethereum](/developers/docs/evm/), che supporta le regole più recenti relative alle diramazioni della rete. Le regole relative alle diramazioni si riferiscono alle modifiche apportate alla macchina virtuale di Ethereum (EVM) a seguito di upgrade pianificati. È suddivisa in vari pacchetti JavaScript che puoi leggere per comprendere meglio: diff --git a/public/content/translations/ja/roadmap/beacon-chain/index.md b/public/content/translations/ja/roadmap/beacon-chain/index.md index 8179f5728ff..693e1c8f830 100644 --- a/public/content/translations/ja/roadmap/beacon-chain/index.md +++ b/public/content/translations/ja/roadmap/beacon-chain/index.md @@ -20,7 +20,7 @@ summaryPoint3: ビーコンチェーンは、コンセンサスロジックと ## ビーコンチェーンとは {#what-does-the-beacon-chain-do} -ビーコンチェーンは、イーサリアム [ステーカー](/staking/)のネットワークを実行、調整していたアカウントのレジャーに与えられた名前です。後に、このイーサリアム[ステーカー](/saking/)が実際のイーサリアムブロックの検証を開始しました。 ただし、ビーコンチェーンでは、トランザクションの処理やスマートコントラクトとのやりとりは行いません。代わりに、実行レイヤーがこれらの処理を行います ビーコンチェーンでは、ブロックとアテステーションの処理、フォーク選択アルゴリズムの実行、報酬とペナルティの管理などを行います。 詳細は、[ノードアーキテクチャのページ](/developers/docs/nodes-and-clients/node-architecture/#node-comparison)をご覧ください。 +ビーコンチェーンは、イーサリアム [ステーカー](/staking/)のネットワークを実行、調整していたアカウントのレジャーに与えられた名前です。後に、このイーサリアム[ステーカー](/staking/)が実際のイーサリアムブロックの検証を開始しました。 ただし、ビーコンチェーンでは、トランザクションの処理やスマートコントラクトとのやりとりは行いません。代わりに、実行レイヤーがこれらの処理を行います ビーコンチェーンでは、ブロックとアテステーションの処理、フォーク選択アルゴリズムの実行、報酬とペナルティの管理などを行います。 詳細は、[ノードアーキテクチャのページ](/developers/docs/nodes-and-clients/node-architecture/#node-comparison)をご覧ください。 ## ビーコンチェーンの影響 {#beacon-chain-features} diff --git a/public/content/translations/ms/defi/index.md b/public/content/translations/ms/defi/index.md index 7b25caa8ada..c8f67b1c9a6 100644 --- a/public/content/translations/ms/defi/index.md +++ b/public/content/translations/ms/defi/index.md @@ -93,7 +93,7 @@ Terdapat alternatif teragih kepada kebanyakan perkhidmatan kewangan. Tetapi Ethe ### Hantar wang ke seluruh dunia dengan cepat {#send-money} -Sebagai blok rantai, Ethereum direka untuk menghantar transaksi dengan cara yang selamat dan global. Seperti Bitcoin, Ethereum menjadikan penghantaran wang ke seluruh dunia semudah menghantar e-mel. Hanya masukkan [nama ENS](/glossary/#ens) penerima anda (seperti bob.eth) atau alamat akaun mereka daripada dompet anda dan bayaran anda akan dihantar terus kepada mereka dalam beberapa minit (biasanya). Untuk menghantar atau menerima pembayaran, anda memerlukan [dompet](/wallet/). +Sebagai blok rantai, Ethereum direka untuk menghantar transaksi dengan cara yang selamat dan global. Seperti Bitcoin, Ethereum menjadikan penghantaran wang ke seluruh dunia semudah menghantar e-mel. Hanya masukkan [nama ENS](/glossary/#ens) penerima anda (seperti bob.eth) atau alamat akaun mereka daripada dompet anda dan bayaran anda akan dihantar terus kepada mereka dalam beberapa minit (biasanya). Untuk menghantar atau menerima pembayaran, anda memerlukan [dompet](/wallets/). Lihat dapps pembayaran diff --git a/public/content/translations/nl/roadmap/dencun/index.md b/public/content/translations/nl/roadmap/dencun/index.md index 06b41933380..8c0ab8e31ff 100644 --- a/public/content/translations/nl/roadmap/dencun/index.md +++ b/public/content/translations/nl/roadmap/dencun/index.md @@ -58,7 +58,7 @@ Het is belangrijk om op te merken dat het herstellen van de historische status w ## Hoe draagt deze upgrade bij aan de bredere routekaart van Ethereum? {#roadmap-impact} -Proto-Danksharding vormt de basis voor de volledige implementatie van [Danksharding](/routekaart/danksharding/). Danksharding is ontworpen om de opslag van rollupgegevens te verdelen over node-operators, zodat elke operator slechts een klein deel van de totale gegevens hoeft te verwerken. Deze verdeling verhoogt het aantal gegevensblobs per block, wat essentieel is voor het opschalen van Ethereum om meer gebruikers en transacties aan te kunnen. +Proto-Danksharding vormt de basis voor de volledige implementatie van [Danksharding](/roadmap/danksharding/). Danksharding is ontworpen om de opslag van rollupgegevens te verdelen over node-operators, zodat elke operator slechts een klein deel van de totale gegevens hoeft te verwerken. Deze verdeling verhoogt het aantal gegevensblobs per block, wat essentieel is voor het opschalen van Ethereum om meer gebruikers en transacties aan te kunnen. Deze schaalbaarheid is cruciaal voor [het ondersteunen van miljarden gebruikers op Ethereum](/routekaart/opschalen/) met betaalbare kosten en meer geavanceerde toepassingen, terwijl een gedecentraliseerd netwerk behouden blijft. Zonder deze wijzigingen zouden de hardwarevereisten voor node-operators escaleren, wat ertoe kan leiden dat er steeds duurdere apparaten nodig zijn. Dit kan kleinere operatoren uit de markt drukken, wat kan leiden tot een concentratie van netwerkcontrole bij een paar grote operatoren, wat indruist tegen het principe van decentralisatie. diff --git a/src/intl/ja/glossary-tooltip.json b/src/intl/ja/glossary-tooltip.json index fc5824215fe..55eab7eed79 100644 --- a/src/intl/ja/glossary-tooltip.json +++ b/src/intl/ja/glossary-tooltip.json @@ -137,7 +137,7 @@ "staking-term": "ステーキング", "staking-definition": "バリデータになり、ネットワークを確保するために大量のEther(ステーク)をデポジットすることです。バリデータは、プルーフ・オブ・ステークによるコンセンサス・モデルに基づいてトランザクションの確認とブロックの提案を行います。ステーキングでは、ネットワークを最善にする動作により経済的なインセンティブを受けることができます。バリデータの責務を実行することで報酬を獲得できますが、実行できなかった場合は状況に応じた量のETHを失います。詳細はイーサリアムのステーキングをご覧ください。", "staking-pool-term": "ステーキングプール", - "staking-pool-definition": "複数のイーサリアムステーカーのETHを合わせ、バリデータ鍵のセットをアクティベートさせるのに必要な32ETHにしたものです。ノードオペレータは、コンセンサスに参加するのにこれらの鍵を使い、ブロック報酬を貢献したステーカーに分配します。ステーキングプールやステーキングの委任は、イーサリアムのプロトコルにおいてネイティブなものではなく、多くのソリューションがコミュニティによって構築されています。 詳細はステーキングプールをご覧ください。", + "staking-pool-definition": "複数のイーサリアムステーカーのETHを合わせ、バリデータ鍵のセットをアクティベートさせるのに必要な32ETHにしたものです。ノードオペレータは、コンセンサスに参加するのにこれらの鍵を使い、ブロック報酬を貢献したステーカーに分配します。ステーキングプールやステーキングの委任は、イーサリアムのプロトコルにおいてネイティブなものではなく、多くのソリューションがコミュニティによって構築されています。 詳細はステーキングプールをご覧ください。", "sybil-attack-term": "シビル攻撃", "sybil-attack-definition": "シビル攻撃とは、1人の人間がシステムを欺いて複数の人間だと認識させ、影響力を増大させることです。", "terminal-total-difficulty-term": "最終合計難易度(TTD)", diff --git a/src/intl/ja/glossary.json b/src/intl/ja/glossary.json index cc01ffd9212..ef3cb434434 100644 --- a/src/intl/ja/glossary.json +++ b/src/intl/ja/glossary.json @@ -340,7 +340,7 @@ "staking-term": "ステーキング", "staking-definition": "バリデータになり、ネットワークを確保するために大量のEther(ステーク)をデポジットすることです。バリデータは、プルーフ・オブ・ステークによるコンセンサス・モデルに基づいてトランザクションの確認とブロックの提案を行います。ステーキングでは、ネットワークを最善にする動作により経済的なインセンティブを受けることができます。バリデータの責務を実行することで報酬を獲得できますが、実行できなかった場合は状況に応じた量のETHを失います。詳細はイーサリアムのステーキングをご覧ください。", "staking-pool-term": "ステーキングプール", - "staking-pool-definition": "複数のイーサリアムステーカーのETHを合わせ、バリデータ鍵のセットをアクティベートさせるのに必要な32ETHにしたものです。ノードオペレータは、コンセンサスに参加するのにこれらの鍵を使い、ブロック報酬を貢献したステーカーに分配します。ステーキングプールやステーキングの委任は、イーサリアムのプロトコルにおいてネイティブなものではなく、多くのソリューションがコミュニティによって構築されています。 詳細はステーキングプールをご覧ください。", + "staking-pool-definition": "複数のイーサリアムステーカーのETHを合わせ、バリデータ鍵のセットをアクティベートさせるのに必要な32ETHにしたものです。ノードオペレータは、コンセンサスに参加するのにこれらの鍵を使い、ブロック報酬を貢献したステーカーに分配します。ステーキングプールやステーキングの委任は、イーサリアムのプロトコルにおいてネイティブなものではなく、多くのソリューションがコミュニティによって構築されています。 詳細はステーキングプールをご覧ください。", "stark-term": "STARK", "stark-definition": "STARKは、「scalable transparent argument of knowledge」の略で ゼロ知識証明の一種です。詳細はゼロ知識ロールアップをご覧ください。", "state-term": "状態", diff --git a/src/intl/ms/page-staking.json b/src/intl/ms/page-staking.json index aae80b57c1c..6d8d6aa5131 100644 --- a/src/intl/ms/page-staking.json +++ b/src/intl/ms/page-staking.json @@ -74,7 +74,7 @@ "page-staking-hierarchy-cex-pill-2": "Andaian kepercayaan tertinggi", "page-staking-hierarchy-cex-p1": "Banyak bursa berpusat menyediakan perkhidmatan pertaruhan jika anda belum selesa memegang ETH dalam dompet anda sendiri. Ia boleh menjadi sandaran untuk membolehkan anda memperoleh sedikit hasil pada pegangan ETH anda dengan pengawasan atau usaha yang minimum.", "page-staking-hierarchy-cex-p2": "Perlawanan di sini ialah penyedia berpusat menggabungkan kumpulan besar ETH untuk menjalankan sejumlah besar pengesah. Ini boleh membahayakan rangkaian dan penggunanya kerana ia mewujudkan sasaran terpusat yang besar dan titik kegagalan, menjadikan rangkaian lebih terdedah kepada serangan atau pepijat.", - "page-staking-hierarchy-cex-p3": "Jika anda tidak selesa memegang kunci anda sendiri, tidak mengapa. Pilihan ini tersedia untuk anda. Sementara itu, pertimbangkan untuk menyemak halaman dompet kami, di mana anda boleh mula mempelajari cara mengambil pemilikan sebenar ke atas dana anda. Apabila anda sudah bersedia, kembali dan tingkatkan permainan pertaruhan anda dengan mencuba salah satu perkhidmatan pertaruhan terkumpul jagaan diri yang ditawarkan.", + "page-staking-hierarchy-cex-p3": "Jika anda tidak selesa memegang kunci anda sendiri, tidak mengapa. Pilihan ini tersedia untuk anda. Sementara itu, pertimbangkan untuk menyemak halaman dompet kami, di mana anda boleh mula mempelajari cara mengambil pemilikan sebenar ke atas dana anda. Apabila anda sudah bersedia, kembali dan tingkatkan permainan pertaruhan anda dengan mencuba salah satu perkhidmatan pertaruhan terkumpul jagaan diri yang ditawarkan.", "page-staking-hierarchy-subtext": "Seperti yang anda mungkin perasan, terdapat banyak cara untuk mengambil bahagian dalam pertaruhan Ethereum. Laluan ini menyasarkan pelbagai pengguna dan akhirnya masing-masing adalah unik dan berbeza dari segi risiko, ganjaran dan andaian amanah. Sesetengahnya lebih teragih, diuji pertempuran dan/atau berisiko daripada yang lain. Kami menyediakan beberapa maklumat tentang projek popular dalam ruang ini, tetapi sentiasa lakukan penyelidikan anda sendiri sebelum menghantar ETH ke mana-mana.", "page-staking-comparison-solo-saas": "Dengan penyedia SaaS, anda masih perlu mendepositkan 32 ETH, tetapi tidak perlu menjalankan perkakasan. Anda biasanya mengekalkan akses kepada kunci pengesah anda, tetapi juga perlu berkongsi kunci tandatangan anda supaya pengendali boleh bertindak bagi pihak pengesah anda. Ini memperkenalkan lapisan kepercayaan yang tidak ada semasa menjalankan perkakasan anda sendiri, dan tidak seperti pertaruhan solo di laman utama, SaaS tidak banyak membantu dengan pengedaran geografi nod. Jika anda tidak selesa mengendalikan perkakasan tetapi masih ingin mempertaruhkan 32 ETH, menggunakan penyedia SaaS mungkin merupakan pilihan yang baik untuk anda.", "page-staking-comparison-solo-pools": "Pertaruhan solo jauh lebih terlibat daripada mempertaruhkan dengan perkhidmatan pengumpulan, tetapi menawarkan akses penuh kepada ganjaran ETH dan kawalan penuh ke atas persediaan dan keselamatan pengesah anda. Pertaruhan terkumpul mempunyai halangan masuk yang jauh lebih rendah. Pengguna boleh mempertaruhkan sejumlah kecil ETH, tidak diperlukan untuk menjana kunci pengesah, dan tidak mempunyai keperluan perkakasan melebihi sambungan internet standard. Token kecairan membolehkan keupayaan untuk keluar daripada pertaruhan sebelum ini didayakan pada peringkat protokol. Jika anda berminat dengan ciri ini, pertaruhan terkumpul mungkin sesuai.", diff --git a/src/scripts/validateTranslatedUrls.IMPROVEMENTS.md b/src/scripts/validateTranslatedUrls.IMPROVEMENTS.md new file mode 100644 index 00000000000..e0ad222e180 --- /dev/null +++ b/src/scripts/validateTranslatedUrls.IMPROVEMENTS.md @@ -0,0 +1,61 @@ +# Validate Translated URLs - Future Improvements + +## P2 - Important (Should Consider) + +### 1. Hardcoded Route Prefixes +**File:** `validateTranslatedUrls.ts:36-81` + +`VALID_PREFIXES` is a hardcoded 46-item list that will drift from actual application routes over time. Consider dynamically extracting routes from `app/[locale]/` directory structure. + +### 2. Performance - Levenshtein on All Paths +**File:** `validateTranslatedUrls.ts:279-293` + +`findBestMatch` runs O(n×m) Levenshtein distance against ALL 284 valid paths for each invalid URL. Add length-based pre-filtering: + +```typescript +const maxLengthDiff = Math.floor(url.length * 0.4) +const candidates = Array.from(validPaths).filter( + p => Math.abs(p.length - url.length) <= maxLengthDiff +) +``` + +### 3. Three Separate Whitelists +**File:** `validateTranslatedUrls.ts:36-96` + +`VALID_PREFIXES`, `WHITELISTED_PATHS`, and `WHITELISTED_PREFIXES` serve overlapping purposes. Consolidate into two lists: `VALID_PATH_PREFIXES` and `EXACT_VALID_PATHS`. + +### 4. Duplicate Link Extraction Functions +**File:** `validateTranslatedUrls.ts:235-277` + +`extractLinksFromMarkdown` and `extractLinksFromJson` are nearly identical (43 lines). Could be one 15-line function: + +```typescript +function extractLinks(content: string, regex: RegExp, urlIndex: number): LinkInfo[] +``` + +### 5. Custom Levenshtein Implementation +**File:** `validateTranslatedUrls.ts:187-212` + +Re-implements standard algorithm. Consider using `fastest-levenshtein` or `leven` package. + +## P3 - Nice-to-Have + +### 1. Path Prefix Inconsistency +**File:** `validateTranslatedUrls.ts:20-23` + +Uses `"public/content"` without `./` prefix. Add `./` prefix to match existing convention. + +### 2. Regex Recreation in Loop +**File:** `validateTranslatedUrls.ts:241, 264` + +Creates new RegExp inside forEach loop unnecessarily. + +### 3. Parallel Arrays in applyFix +**File:** `validateTranslatedUrls.ts:382-400` + +Parallel `patterns[]` and `replacements[]` arrays are error-prone. Use array of objects instead. + +### 4. Pre-compute Normalized Prefixes +**File:** `validateTranslatedUrls.ts:314-315` + +`.replace(/\/$/, "")` called in hot loop. Should pre-compute.