Hvis du har drevet din NopCommerce-butikk i årevis, er det stor sannsynlighet for at du har gjort mange tilpassede justeringer i dine lokale strengressurser.
På grunn av dette kan det føles risikabelt å importere et nytt språkpakke — ett klikk og du kan overskrive dusinvis eller til og med hundrevis av oversettelser du nøye har justert over tid.Den offisielle anbefalingen fra NopCommerce er å eksportere dine nåværende lokale ressurser, sammenligne dem manuelt med den nye språkpakken ved hjelp av verktøy som WinMerge, og deretter kopiere forskjellene en etter en.
Denne tilnærmingen fungerer, men den er treg og feilutsatt, spesielt hvis butikken din har tusenvis av oppføringer.
For å gjøre denne prosessen enklere og tryggere, lagde jeg et enkelt PowerShell-skript som sammenligner to XML-filer og forteller deg nøyaktig hva som har endret seg — uten behov for manuelle diff-verktøy.
Hva Skriptet Gjør
Skriptet sammenligner to XML-filer:
-
old.xml — dine nåværende lokale strengressurser
-
new.xml — den nyeste språkpakken for din NopCommerce-versjon
Det matcher oppføringer etter deres Name-attributt og genererer tre klare utdatafiler:
added.xml
Inneholder ressurser som finnes i den nye språkpakken, men mangler i din nåværende.
removed.xml
Inneholder ressurser som finnes i din nåværende installasjon, men ikke lenger er til stede i den nye språkpakken.
changed.xml
Inneholder ressurser som finnes i begge filene, men har forskjellige verdier (din egendefinerte oversettelse vs.den oppdaterte).
Dette gir deg en oversikt over alt som har endret seg — uten å endre noe i butikken din.
Vil du ha en enda enklere løsning?Prøv EasyTranslate
Hvis du er villig til å bruke et lite budsjett for å forenkle denne oppgaven ytterligere, kan du ta en titt på mitt EasyTranslate tillegg.
Med EasyTranslate kan du:
-
Se manglende og uoversatte lokaleressurser direkte i NopCommerce-administrasjonspanelet
-
Oversette dem umiddelbart ved hjelp av Google Translation API
-
Eksportere dem som XML hvis du foretrekker manuell redigering
-
Oppdage uoversatt innhold i hele butikken din
(katalog, blogginnlegg, nyheter, emner — alt som kan oversettes) -
Oversett alt dette innholdet med Google med bare noen få klikk
For butikker med mange språk sparer EasyTranslate timer med manuelt arbeid.
Hvordan bruke PowerShell-skriptet (Windows)
Følg disse trinnene for å sammenligne dine nåværende oversettelser med det nyeste språkpakken på en sikker måte.
1.Install PowerShell
De fleste Windows-installasjoner har det allerede.
Hvis ikke, last det ned fra Microsoft.
2. Last ned skriptet
Last ned nop-lang-compare.ps1 og plasser det i arbeidsmappen din.

3.Åpne PowerShell i arbeidsmappen din
Du har to alternativer:
Alternativ A: Bruk cd-kommandoen
Alternativ B: Bruke Filutforsker (enklere)
Åpne mappen din → klikk i adresselinjen → skriv powershell → trykk Enter.
PowerShell vil åpne direkte i den mappen.
4.Eksporter dine nåværende språkressurser
I NopCommerce Admin:
Konfigurasjon → Språk → velg et språk → Eksporter ressurser
Flytt den nedlastede XML-filen til arbeidsmappen din og gi den nytt navn:
5.Last ned det nyeste språkpakken
Gå til den offisielle oversettelsessiden på NopCommerce-nettstedet og last ned den nyeste pakken for din versjon.
Plasser filen i arbeidsmappen din og gi den nytt navn:
6.Bekreft at alle filer er til stede
I PowerShell, kjør:
Du bør se:
-
nop-lang-compare.ps1
-
old.xml
-
new.xml

7.Kjør skriptet
Kjør:

Skriptet vil opprette:
-
added.xml
-
removed.xml
-
changed.xml
i samme mappe.
Hva du skal gjøre med resultatene
✔ Importer added.xml
Trygt å importere — det legger kun til manglende elementer.
✔ Gå gjennom changed.xml
Bestem hvilke verdier du vil beholde:
-
Hvis oppføringen inneholder din egendefinerte oversettelse → slett den oppføringen fra changed.xml
-
Hvis du vil ha den nye oversettelsen → la den stå som den er
Lagre filen og importer den.Kun de oppføringene som gjenstår vil bli oppdatert.
✔ Ignorer normalt removed.xml
Den er kun til referanse.
Du trenger vanligvis ikke å importere fjernede oppføringer tilbake til din butikk.
nop-lang-compare.ps1
# Bestem utdatamappe (mappen der dette skriptet ligger)
$OutDir = $PSScriptRoot
# Last XML-filer
[xml]$old = Get-Content "old.xml"
[xml]$new = Get-Content "new.xml"
# Bygg hashtabell: Navn -> Trimmet verdi
$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()
}
# Hjelpefunksjon for å opprette et XML-dokument med ressurser
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 LAGT TIL ---
$added = @()
foreach ($key in $newMap.Keys) {
if (-not $oldMap.ContainsKey($key)) {
$added += [pscustomobject]@{
Name = $key
Value = $newMap[$key]
}
}
}
# --- Bestem FJERNET ---
$removed = @()
foreach ($key in $oldMap.Keys) {
if (-not $newMap.ContainsKey($key)) {
$removed += [pscustomobject]@{
Name = $key
Value = $oldMap[$key]
}
}
}
# --- Bestem ENDRET ---
$changed = @()
foreach ($key in $oldMap.Keys) {
if ($newMap.ContainsKey($key) -and $oldMap[$key] -ne $newMap[$key]) {
$changed += [pscustomobject]@{
Name = $key
Value = $newMap[$key] # lagre NY trimmet verdi
}
}
}
# Lagre XML diff-filer til skriptets 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 "Opprettet added.xml, removed.xml, changed.xml i $OutDir" -ForegroundColor Green
