Cum să Actualizați Resursele de Șiruri de Locale fără a Pierde Modificările Personalizate în NopCommerce

Dacă administrați magazinul dvs. NopCommerce de ani de zile, este foarte probabil că ați făcut numeroase modificări personalizate la resursele dvs. locale de șiruri de caractere.

Din această cauză, importarea unui nou pachet de limbă poate părea riscantă — un singur clic și s-ar putea să suprascrieți zeci sau chiar sute de traduceri pe care le-ați ajustat cu grijă de-a lungul timpului.

 

Recomandarea oficială de la NopCommerce este să exportați resursele locale actuale, să le comparați manual cu noul pachet de limbă folosind instrumente precum WinMerge, și apoi să copiați diferențele una câte una.
Această abordare funcționează, dar este lentă și predispusă la erori, mai ales dacă magazinul dvs. are mii de intrări.

Pentru a face acest proces mai ușor și mai sigur, am creat un script PowerShell simplu care compară două fișiere XML și vă spune exact ce s-a schimbat — fără nevoia de instrumente manuale de comparare.

Ce Face Scriptul

Scriptul compară două fișiere XML:

  • old.xml — resursele dvs. curente de șiruri locale

  • new.xml — cel mai nou pachet de limbă pentru versiunea dvs. de NopCommerce

Potrivește intrările după atributul lor Name și generează trei fișiere de ieșire clare:

added.xml

Conține resurse care există în noul pachet de limbă, dar lipsesc din cel curent.

removed.xml

Conține resurse care există în instalarea dvs. curentă, dar nu mai sunt prezente în noul pachet de limbă.

changed.xml

Conține resurse care există în ambele fișiere, dar au valori diferite (traducerea dvs. personalizată vs.actualizată).

Aceasta vă oferă o imagine de ansamblu clară a tuturor modificărilor — fără a modifica nimic în magazinul dvs.

Doriți o soluție și mai ușoară?Încearcă EasyTranslate

Dacă ești deschis să aloci un buget mic pentru a simplifica și mai mult această sarcină, aruncă o privire la EasyTranslate pluginul meu.
EasyTranslate plugin for multilingual NopCommerce stores

Cu EasyTranslate, poți:

  • Vezi resursele de localizare lipsă și netraduse direct în panoul de administrare NopCommerce

  • Le tradu instant folosind API-ul Google Translation

  • Le exportă ca XML dacă preferi editarea manuală

  • Detectează conținut netradus în întregul tău magazin
    (catalog, postări pe blog, știri, subiecte — orice poate fi tradus)

  • Tradu tot acest conținut cu Google în doar câteva clicuri

Pentru magazinele cu multe limbi, EasyTranslate economisește ore de muncă manuală.

Cum să Folosești Scriptul PowerShell (Windows)

Urmează acești pași pentru a compara în siguranță traducerile tale curente cu cel mai nou pachet de limbă.

1.Instalați PowerShell

Majoritatea instalărilor Windows îl au deja. Dacă nu, descărcați-l de la Microsoft.

2. Descărcați Script-ul

Descărcați nop-lang-compare.ps1 și plasați-l în directorul de lucru.

3. Deschideți PowerShell în directorul dvs. de lucru

Aveți două opțiuni:

Opțiunea A: Utilizarea comenzii cd

 
cd C:\Path\To\Your\Dir


Opțiunea B: Utilizarea Exploratorului de fișiere (mai ușor)

Deschideți dosarul → faceți clic în bara de adresă → tastați powershell → apăsați Enter.
PowerShell se va deschide direct în acel dosar.

4.

Exportați Resursele Locale Actuale

În NopCommerce Admin:

Configurație → Limbi → selectați o limbă → Exportați Resurse

Mutați fișierul XML descărcat în folderul de lucru și redenumiți-l în:

vechi.xml


5.Descarcă cel mai nou pachet de limbă

Accesează pagina oficială de traduceri de pe site-ul NopCommerce și descarcă cel mai nou pachet pentru versiunea ta.

Plasează fișierul în dosarul tău de lucru și redenumește-l în:

new.xml


6.Confirmă că Toate Fișierele Sunt Prezente

În PowerShell, rulează:

dir

Ar trebui să vezi:

  • nop-lang-compare.ps1

  • old.xml

  • new.xml



7.Rulează Scriptul

Execută:

.\nop-lang-compare.ps1



Scriptul va crea:

  • added.xml

  • removed.xml

  • changed.xml

în același folder.



Ce Să Faci cu Rezultatele

✔ Importă added.xml

Sigur de importat — doar adaugă elementele lipsă.

✔ Revizuiește changed.xml

Decide ce valori vrei să păstrezi:

  • Dacă intrarea conține traducerea ta personalizată → șterge acea intrare din changed.xml

  • Dacă vrei noua traducere → las-o așa cum este

Salvează fișierul și importă-l.

Doar intrările care rămân vor fi actualizate.

✔ Ignoră în mod normal removed.xml

Este doar pentru referință.
De obicei, nu trebuie să importați înapoi în magazin intrările eliminate.

nop-lang-compare.ps1

# Determine output directory (directory where this script is located) $OutDir = $PSScriptRoot # Load XML files [xml]$old = Get-Content "old.xml" [xml]$new = Get-Content "new.xml" # Build hashtable: Name -> Trimmed Value $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() } # Helper function to create an XML document with resources 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 } # --- Determine ADDED --- $added = @() foreach ($key in $newMap.Keys) { if (-not $oldMap.ContainsKey($key)) { $added += [pscustomobject]@{ Name = $key Value = $newMap[$key] } } } # --- Determine REMOVED --- $removed = @() foreach ($key in $oldMap.Keys) { if (-not $newMap.ContainsKey($key)) { $removed += [pscustomobject]@{ Name = $key Value = $oldMap[$key] } } } # --- Determine CHANGED --- $changed = @() foreach ($key in $oldMap.Keys) { if ($newMap.ContainsKey($key) -and $oldMap[$key] -ne $newMap[$key]) { $changed += [pscustomobject]@{ Name = $key Value = $newMap[$key] # store NEW trimmed value } } } # Save XML diff files to the script’s folder (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 "Created added.xml, removed.xml, changed.xml in $OutDir" -ForegroundColor Green

Leave your comment
*
Only registered users can leave comments.