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.
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
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:
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:
6.Confirmă că Toate Fișierele Sunt Prezente
În PowerShell, rulează:
Ar trebui să vezi:
-
nop-lang-compare.ps1
-
old.xml
-
new.xml

7.Rulează Scriptul
Execută:

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
