Ha évek óta üzemelteted a NopCommerce áruházadat, valószínűleg számos egyedi módosítást végeztél a helyi szöveges erőforrásaidon.Emiatt egy új nyelvi csomag importálása kockázatosnak érződhet — egy kattintás, és felülírhatsz tucatnyi vagy akár több száz fordítást, amelyeket gondosan igazítottál az idő múlásával.
A NopCommerce hivatalos ajánlása az, hogy exportáld a jelenlegi nyelvi erőforrásaidat, hasonlítsd össze őket manuálisan az új nyelvi csomaggal olyan eszközökkel, mint a WinMerge, majd másold át a különbségeket egyesével.
Ez a módszer működik, de lassú és hibalehetőségekkel teli, különösen, ha az üzletedben több ezer bejegyzés található.
Hogy ezt a folyamatot könnyebbé és biztonságosabbá tegyem, készítettem egy egyszerű PowerShell szkriptet, amely összehasonlít két XML fájlt, és pontosan megmutatja, mi változott — anélkül, hogy manuális diff eszközökre lenne szükség.
Mit Csinál a Szkript
A szkript két XML fájlt hasonlít össze:
-
old.xml — a jelenlegi nyelvi sztring erőforrásaid
-
new.xml — a legújabb nyelvi csomag a NopCommerce verziódhoz
A bejegyzéseket a Name attribútum alapján párosítja, és három világos kimeneti fájlt generál:
added.xml
Olyan erőforrásokat tartalmaz, amelyek az új nyelvi csomagban szerepelnek, de hiányoznak a jelenlegiből.
removed.xml
Olyan erőforrásokat tartalmaz, amelyek a jelenlegi telepítésedben léteznek, de már nem találhatók meg az új nyelvi csomagban.
changed.xml
Olyan erőforrásokat tartalmaz, amelyek mindkét fájlban léteznek, de eltérő értékekkel rendelkeznek (az egyéni fordításod vs.a frissített).
Ez tiszta áttekintést nyújt minden változásról — anélkül, hogy bármit módosítana az üzletében.
Még Könnyebb Megoldást Szeretne?Próbáld ki az EasyTranslate-et
Ha nyitott vagy egy kis költségvetés kiadására, hogy tovább egyszerűsítsd ezt a feladatot, tekintsd meg az EasyTranslate bővítményemet.
Az EasyTranslate segítségével:
-
Közvetlenül a NopCommerce admin felületen láthatod a hiányzó és le nem fordított nyelvi erőforrásokat
-
Azonnal lefordíthatod őket a Google Translation API segítségével
-
XML-ként exportálhatod őket, ha inkább manuális szerkesztést részesítesz előnyben
-
Felderítheted a le nem fordított tartalmakat a teljes áruházadban
(katalógus, blogbejegyzések, hírek, témák — bármi, ami fordítható) -
Ezt az összes tartalmat néhány kattintással lefordíthatod a Google segítségével
A sok nyelvvel rendelkező áruházak esetében az EasyTranslate órák manuális munkát takarít meg.
A PowerShell szkript használata (Windows)
Kövesd ezeket a lépéseket, hogy biztonságosan összehasonlítsd jelenlegi fordításaidat a legújabb nyelvi csomaggal.
1.Install PowerShell
A legtöbb Windows telepítés már tartalmazza. Ha nem, töltse le a Microsofttól.
2. A szkript letöltése
Letöltés nop-lang-compare.ps1 fájlt és helyezze a munkakönyvtárába.

3. Nyissa meg a PowerShell-t a munkakönyvtárában
Két lehetősége van:
A lehetőség: A cd parancs használatával
B lehetőség: Fájlkezelő használata (egyszerűbb)
Nyisd meg a mappádat → kattints a címsávba → írd be, hogy powershell → nyomj Enter-t.
A PowerShell közvetlenül abban a mappában fog megnyílni.
4.
Aktuális nyelvi erőforrások exportálása
A NopCommerce admin felületen:
Beállítások → Nyelvek → válassz egy nyelvet → Erőforrások exportálása
Helyezd a letöltött XML fájlt a munkakönyvtáradba és nevezd át erre:
5.Töltse le a legújabb nyelvi csomagot
Látogasson el a NopCommerce weboldal hivatalos fordítási oldalára és töltse le a legújabb csomagot a verziójához.
Helyezze a fájlt a munkakönyvtárába és nevezze át a következőre:
6.
Ellenőrizze, hogy minden fájl megtalálható
A PowerShellben futtassa:
A következőnek kell megjelennie:
-
nop-lang-compare.ps1
-
old.xml
-
new.xml

7.Futtasd a szkriptet
Végezd el:

A szkript létrehozza:
-
added.xml
-
removed.xml
-
changed.xml
ugyanabban a mappában.
Mi a teendő az eredményekkel
✔ Importáld a added.xml fájlt
Biztonságos importálni — csak a hiányzó elemeket adja hozzá.
✔ Ellenőrizd a changed.xml fájlt
Döntsd el, mely értékeket szeretnéd megtartani:
-
Ha a bejegyzés tartalmazza az egyéni fordítást → töröld azt a bejegyzést a changed.xml-ből
-
Ha az új fordítást szeretnéd → hagyd változatlanul
Mentsd el a fájlt, majd importáld.Csak a megmaradó bejegyzések frissülnek.
✔ Általában figyelmen kívül hagyja a removed.xml fájlt
Csak referenciaként szolgál.
Általában nem kell eltávolított bejegyzéseket visszaimportálni az áruházba.
nop-lang-compare.ps1
# Kimeneti könyvtár meghatározása (a szkript helyének könyvtára)
$OutDir = $PSScriptRoot
# XML fájlok betöltése
[xml]$old = Get-Content "old.xml"
[xml]$new = Get-Content "new.xml"
# Hashtable felépítése: Név -> Kivágott Érték
$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()
}
# Segédfüggvény XML dokumentum létrehozásához erőforrásokkal
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
}
# --- HOZZÁADOTT meghatározása ---
$added = @()
foreach ($key in $newMap.Keys) {
if (-not $oldMap.ContainsKey($key)) {
$added += [pscustomobject]@{
Name = $key
Value = $newMap[$key]
}
}
}
# --- ELTÁVOLÍTOTT meghatározása ---
$removed = @()
foreach ($key in $oldMap.Keys) {
if (-not $newMap.ContainsKey($key)) {
$removed += [pscustomobject]@{
Name = $key
Value = $oldMap[$key]
}
}
}
# --- MÓDOSÍTOTT meghatározása ---
$changed = @()
foreach ($key in $oldMap.Keys) {
if ($newMap.ContainsKey($key) -and $oldMap[$key] -ne $newMap[$key]) {
$changed += [pscustomobject]@{
Name = $key
Value = $newMap[$key] # az ÚJ kivágott érték tárolása
}
}
}
# XML különbségfájlok mentése a szkript mappájába
(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 "Létrehozva added.xml, removed.xml, changed.xml a $OutDir könyvtárban" -ForegroundColor Green
