Press "Enter" to skip to content

Come aiutare la tua AI a creare Risorse in lingua

Considerato che ormai anche noi Dinosauri della programmazione siamo dotati di AI per la produzione rapida del codice, e dopo i primi tempi in cui le martellate da dare al codice perché funzionasse erano parecchie, adesso invece il lavoro collaborativo trasforma un programmatore senior in un Supereroe della programmazione, post di istruzione base non sembra necessario scriverli, però ogni tanto alcune cose complesse hanno ancora bisogno di annotarci il come si fa. Di qui il titolo.

Premessa

Non so se tutti voi abbiate mai fatto UI in WPF o Windows Forms multilingua, ma il metodo ancora oggi più opportuno per farlo è usare il file di resources.
Un file resources è così composto:
MioFileDiRisorse.resx -> linguaggio neutro fallback se non esiste una traduzione. (io ci metto l’inglese).
MioFileDiRisorse.it.resx -> lingua italiana
MioFileDiRisorse.de.resx -> lingua tedesca
e così via per tutte le lingue necessarie e opportune.
L’AI è in grado di generare le nuove risorse dentro ai files .resx senza problemi e se fosse tutto qui, questo post non servirebbe, ma i files di risorse hanno un ulteriore file ad essi collegato che si chiama:
MioFileDiRisorse.designer.cs
è un file neutro che per ogni stringa ci genera il codice necessario a poterla referenziare sia in XAML che in CSharp.

Visual studio aiuta noi umani e genera automaticamente le modifiche al .designer.cs tramite il “Custom Tool” che quando inseriamo le resources stringa a mano si aggiorna al salvataggio.
Sfortunatamente, a meno che voi non utilizziate CoPilot, internamente a visual studio (e non sono convinta funzioni anche per lui), ma invece usate tools esterni come Codex o Claude-Code, la povera AI deve andare a modificare manualmente il .designer.cs che 99 volte su cento funziona, ma per file di resources nuovi o in alcuni casi anche sui file vecchi, non funziona bene e provoca malfunzionamenti ed errori inaspettati in compilazione.

La soluzione

Ovviamente soluzione per Windows purtroppo, i colleghi Mac spero abbiano un aiutino in qualche Extension di Visual Studio Code :).
Potete istruire la vostra AI dicendogli che quando modifica un file .resx, può rigenerare automaticamente il .designer.cs utilizzando il ResGen.exe che viene installato fra i tools di .net.

$resgen = 'C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8.1 Tools\ResGen.exe'
$input = (Resolve-Path -LiteralPath 'Resources\MyResourceFileRx.resx').Path
$output = Join-Path (Split-Path $input) 'MyResourceFileRx.Designer.cs'

& $resgen $input ("/str:cs,MYROOTNAMESPACE.Resources,MyResourceFileRx,{0}" -f $output) /publicClass

Qui sopra il comando powershell che lanciato dall’AI posizionato sulla cartella Root Del progetto csharp rigenera il file .designer.cs per MyResourceFileRx.resx nella cartella Resources del mio progetto, assegnando alla classe generata il corretto namespace affinchè funzioni esattamente come i file generati da visual studio.

Il modo più semplice per farlo recepire al vostro Codex o al vostro Claude è quello di dirgli come si fa, come si usa, dove trovarlo e di segnare lui nelle regole globali di funzionamento che deve usarlo per tutti i file di resources su cui fa delle modifiche.
Fatto questo potete “costringerlo” a mettere tutte le strighe che avete inserito nella UI a mano dentro un file di risorse e tradurvi la vostra user interface nelle lingue che preferite senza dover muovere un dito.