Hvis du har drevet din NopCommerce-butik i årevis, er der stor sandsynlighed for, at du har foretaget mange tilpasninger af dine lokale strengressourcer.
På grund af dette kan import af et nyt sprogpakke føles risikabelt — ét klik, og du kan overskrive snesevis eller endda hundredvis af oversættelser, du omhyggeligt har justeret over tid.
Den officielle anbefaling fra NopCommerce er at eksportere dine nuværende lokale ressourcer, sammenligne dem manuelt med den nye sprogpakke ved hjælp af værktøjer som WinMerge, og derefter kopiere forskellene en efter en.
Denne tilgang virker, men den er langsom og fejlbehæftet, især hvis din butik har tusindvis af poster.
For at gøre denne proces nemmere og sikrere, har jeg oprettet et simpelt PowerShell-script, der sammenligner to XML-filer og fortæller dig præcis hvad der er ændret — uden brug for manuelle diff-værktøjer.
Hvad Scriptet Gør
Scriptet sammenligner to XML-filer:
-
old.xml — dine nuværende lokale strengressourcer
-
new.xml — den nyeste sprogpakke til din NopCommerce-version
Det matcher poster efter deres Name-attribut og genererer tre klare outputfiler:
added.xml
Indeholder ressourcer, der findes i den nye sprogpakke, men mangler i din nuværende.
removed.xml
Indeholder ressourcer, der findes i din nuværende installation, men ikke længere er til stede i den nye sprogpakke.
changed.xml
Indeholder ressourcer, der findes i begge filer, men har forskellige værdier (din brugerdefinerede oversættelse vs.den opdaterede version).
Dette giver dig et klart overblik over alt, der er ændret — uden at ændre noget i din butik.
Ønsker du en endnu nemmere løsning?Prøv EasyTranslate
Hvis du er åben for at bruge et lille budget for at forenkle denne opgave yderligere, så tag et kig på mit EasyTranslate plugin.
Med EasyTranslate kan du:
-
Se manglende og uoversatte lokale ressourcer direkte i NopCommerce admin panelet
-
Oversætte dem øjeblikkeligt ved hjælp af Google Translation API
-
Eksportere dem som XML, hvis du foretrækker manuel redigering
-
Opdage uoversat indhold i hele din butik
(katalog, blogindlæg, nyheder, emner — alt der kan oversættes) -
Oversætte alt dette indhold med Google på bare få klik
For butikker med mange sprog sparer EasyTranslate timer af manuelt arbejde.
Sådan bruger du PowerShell-scriptet (Windows)
Følg disse trin for sikkert at sammenligne dine nuværende oversættelser med det nyeste sprogpakke.
1.Installér PowerShell
De fleste Windows-installationer har det allerede.
Hvis ikke, så download det fra Microsoft.
2. Download Scriptet
Download nop-lang-compare.ps1 og placer det i din arbejdsmappe.

3.Åbn PowerShell i din arbejdsmappe
Du har to muligheder:
Mulighed A: Brug cd-kommandoen
Mulighed B: Brug af Stifinder (nemmere)
Åbn din mappe → klik i adressefeltet → skriv powershell → tryk Enter.
PowerShell vil åbne direkte i den mappe.
4.Eksporter dine nuværende lokale ressourcer
I NopCommerce Admin:
Konfiguration → Sprog → vælg et sprog → Eksporter ressourcer
Flyt den downloadede XML-fil til din arbejdsmappe og omdøb den til:
5.Download det nyeste sprogpakke
Gå til den officielle oversættelsesside på NopCommerce hjemmesiden og download den nyeste pakke til din version.
Placer filen i din arbejdsmappe og omdøb den til:
6.Bekræft, at alle filer er til stede
I PowerShell, kør:
Du burde se:
-
nop-lang-compare.ps1
-
old.xml
-
new.xml

7.Kør Scriptet
Udfør:

Scriptet vil oprette:
-
added.xml
-
removed.xml
-
changed.xml
i samme mappe.
Hvad Du Skal Gøre Med Resultaterne
✔ Importer added.xml
Sikkert at importere — det tilføjer kun manglende elementer.
✔ Gennemgå changed.xml
Beslut hvilke værdier du vil beholde:
-
Hvis indgangen indeholder din brugerdefinerede oversættelse → slet den indgang fra changed.xml
-
Hvis du vil have den nye oversættelse → lad den være som den er
Gem filen og importer den.Kun de poster, der forbliver, vil blive opdateret.
✔ Ignorer normalt removed.xml
Den er kun til reference.
Du behøver normalt ikke at importere fjernede poster tilbage til din butik.
nop-lang-compare.ps1
# Bestem outputmappe (mappen hvor dette script er placeret)
$OutDir = $PSScriptRoot
# Indlæs XML-filer
[xml]$old = Get-Content "old.xml"
[xml]$new = Get-Content "new.xml"
# Byg hashtabel: Navn -> Trimmet værdi
$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()
}
# Hjælpefunktion til at oprette et XML-dokument med ressourcer
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
}
# --- Bestem TILFØJEDE ---
$added = @()
foreach ($key in $newMap.Keys) {
if (-not $oldMap.ContainsKey($key)) {
$added += [pscustomobject]@{
Name = $key
Value = $newMap[$key]
}
}
}
# --- Bestem FJERNEDE ---
$removed = @()
foreach ($key in $oldMap.Keys) {
if (-not $newMap.ContainsKey($key)) {
$removed += [pscustomobject]@{
Name = $key
Value = $oldMap[$key]
}
}
}
# --- Bestem ÆNDREDE ---
$changed = @()
foreach ($key in $oldMap.Keys) {
if ($newMap.ContainsKey($key) -and $oldMap[$key] -ne $newMap[$key]) {
$changed += [pscustomobject]@{
Name = $key
Value = $newMap[$key] # gem NY trimmet værdi
}
}
}
# Gem XML-diff-filer til scriptets mappe
(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 "Oprettet added.xml, removed.xml, changed.xml i $OutDir" -ForegroundColor Green
