Hvordan oppdatere dine lokale strengressurser uten å miste dine tilpassede endringer i NopCommerce

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.
EasyTranslate-tillegg for flerspråklige NopCommerce-butikker

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

 
cd C:\Path\To\Your\Dir


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:

old.xml


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:

new.xml


6.

Bekreft at alle filer er til stede

I PowerShell, kjør:

dir

Du bør se:

  • nop-lang-compare.ps1

  • old.xml

  • new.xml



7.Kjør skriptet

Kjør:

.\nop-lang-compare.ps1



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

Leave your comment
*
Only registered users can leave comments.