Pokud provozujete svůj obchod NopCommerce již několik let, je pravděpodobné, že jste provedli mnoho vlastních úprav ve zdrojích lokalizačních řetězců.
Kvůli tomu může import nového jazykového balíčku působit riskantně — jedním kliknutím můžete přepsat desítky nebo dokonce stovky překladů, které jste pečlivě upravovali v průběhu času.
Oficiální doporučení od NopCommerce je exportovat vaše aktuální lokální zdroje, ručně je porovnat s novým jazykovým balíčkem pomocí nástrojů jako WinMerge a poté rozdíly zkopírovat jeden po druhém.
Tento přístup funguje, ale je pomalý a náchylný k chybám, zvláště pokud má váš obchod tisíce záznamů.
Abych tento proces usnadnil a zpříjemnil, vytvořil jsem jednoduchý PowerShell skript, který porovná dva XML soubory a řekne vám přesně, co se změnilo — bez nutnosti ručních porovnávacích nástrojů.
Co skript dělá
Skript porovnává dva XML soubory:
-
old.xml — vaše aktuální zdroje řetězců pro lokalizaci
-
new.xml — nejnovější jazykový balíček pro vaši verzi NopCommerce
Porovnává záznamy podle jejich atributu Name a generuje tři přehledné výstupní soubory:
added.xml
Obsahuje zdroje, které existují v novém jazykovém balíčku, ale chybí ve vašem aktuálním.
removed.xml
Obsahuje zdroje, které existují ve vaší aktuální instalaci, ale již nejsou přítomny v novém jazykovém balíčku.
changed.xml
Obsahuje zdroje, které existují v obou souborech, ale mají odlišné hodnoty (váš vlastní překlad vs.aktualizovanou).
Tím získáte přehledný přehled všeho, co se změnilo – aniž byste cokoli upravovali ve svém obchodě.
Chcete ještě jednodušší řešení?Vyzkoušejte EasyTranslate
Pokud jste ochotni vynaložit malý rozpočet, abyste tento úkol ještě více zjednodušili, podívejte se na můj plugin EasyTranslate .
S EasyTranslate můžete:
-
Vidět chybějící a nepřeložené jazykové prostředky přímo v administračním panelu NopCommerce
-
Přeložit je okamžitě pomocí Google Translation API
-
Exportovat je jako XML, pokud dáváte přednost ruční úpravě
-
Detekovat nepřeložený obsah v celém vašem obchodě
(katalog, blogové příspěvky, novinky, témata – cokoli přeložitelného) -
Přeložit veškerý tento obsah pomocí Google jen několika kliknutími
Pro obchody s mnoha jazyky ušetří EasyTranslate hodiny manuální práce.
Jak používat PowerShell skript (Windows)
Postupujte podle těchto kroků, abyste bezpečně porovnali své aktuální překlady s nejnovějším jazykovým balíčkem.
1.
Instalace PowerShellu
Většina instalací Windows jej již má. Pokud ne, stáhněte si jej od Microsoftu.
2. Stažení skriptu
Stáhnout nop-lang-compare.ps1 a umístěte jej do své pracovní složky.

3.
Otevřete PowerShell ve vaší pracovní složce
Máte dvě možnosti:
Možnost A: Použití příkazu cd
Možnost B: Použití Průzkumníka souborů (jednodušší)
Otevřete svou složku → klikněte na adresní řádek → napište powershell → stiskněte Enter.
PowerShell se otevře přímo v této složce.
4.
Exportujte své aktuální lokalizační zdroje
V administraci NopCommerce:
Konfigurace → Jazyky → vyberte jazyk → Exportovat zdroje
Přesuňte stažený XML soubor do vaší pracovní složky a přejmenujte ho na:
5.
Stáhněte si nejnovější jazykový balíček
Přejděte na oficiální stránku překladů na webu NopCommerce a stáhněte si nejnovější balíček pro vaši verzi.
Umístěte soubor do vaší pracovní složky a přejmenujte ho na:
6.
Potvrďte, že jsou přítomny všechny soubory
V PowerShellu spusťte:
Měli byste vidět:
-
nop-lang-compare.ps1
-
old.xml
-
new.xml

7.Spusťte skript
Spusťte:

Skript vytvoří:
-
added.xml
-
removed.xml
-
changed.xml
ve stejné složce.
Co dělat s výsledky
✔ Importujte added.xml
Je bezpečné importovat — pouze přidává chybějící položky.
✔ Projděte changed.xml
Rozhodněte, které hodnoty chcete zachovat:
-
Pokud záznam obsahuje vaši vlastní překlad → odstraňte tento záznam ze souboru changed.xml
-
Pokud chcete nový překlad → ponechte jej beze změn
Uložte soubor a importujte jej.
Budou aktualizovány pouze položky, které zůstanou.
✔ Obvykle ignorujte removed.xml
Slouží pouze pro referenci.
Obvykle není potřeba odstraněné položky znovu importovat do vašeho obchodu.
nop-lang-compare.ps1
# Určení výstupního adresáře (adresář, kde se tento skript nachází)
$OutDir = $PSScriptRoot
# Načtení XML souborů
[xml]$old = Get-Content "old.xml"
[xml]$new = Get-Content "new.xml"
# Vytvoření hashtable: Název -> Oříznutá Hodnota
$oldMap = @{}
$newMap = @{}
foreach ($n in $old.Language.LocaleResource) {
$oldMap[$n.Name] = $n.Value.Trim()
}
foreach ($n in $new.Language.LocaleResource) {
$newMap[$n.Name] = $n.Value.Trim()
}
# Pomocná funkce pro vytvoření XML dokumentu s prostředky
function New-LangXml {
param ($resources)
$xml = New-Object System.Xml.XmlDocument
$decl = $xml.CreateXmlDeclaration("1.0", "utf-8", $null)
$xml.AppendChild($decl) | Out-Null
$root = $xml.CreateElement("Language")
$root.SetAttribute("Name", "Diff")
$root.SetAttribute("SupportedVersion", "1.0")
$xml.AppendChild($root) | Out-Null
foreach ($r in $resources) {
$node = $xml.CreateElement("LocaleResource")
$node.SetAttribute("Name", $r.Name)
$valueNode = $xml.CreateElement("Value")
$valueNode.InnerText = $r.Value
$node.AppendChild($valueNode) | Out-Null
$root.AppendChild($node) | Out-Null
}
return $xml
}
# --- Určení PŘIDANÝCH ---
$added = @()
foreach ($key in $newMap.Keys) {
if (-not $oldMap.ContainsKey($key)) {
$added += [pscustomobject]@{
Name = $key
Value = $newMap[$key]
}
}
}
# --- Určení ODEBRANÝCH ---
$removed = @()
foreach ($key in $oldMap.Keys) {
if (-not $newMap.ContainsKey($key)) {
$removed += [pscustomobject]@{
Name = $key
Value = $oldMap[$key]
}
}
}
# --- Určení ZMĚNĚNÝCH ---
$changed = @()
foreach ($key in $oldMap.Keys) {
if ($newMap.ContainsKey($key) -and $oldMap[$key] -ne $newMap[$key]) {
$changed += [pscustomobject]@{
Name = $key
Value = $newMap[$key] # uložit NOVOU oříznutou hodnotu
}
}
}
# Uložení XML souborů s rozdíly do složky skriptu
(New-LangXml $added).Save( (Join-Path $OutDir "added.xml") )
(New-LangXml $removed).Save( (Join-Path $OutDir "removed.xml") )
(New-LangXml $changed).Save( (Join-Path $OutDir "changed.xml") )
Write-Host "Vytvořeno added.xml, removed.xml, changed.xml v $OutDir" -ForegroundColor Green
