LazowskiAnton · Extensions

LocaleSmith

Le texte de chaque clé .resx, là où la clé est utilisée : la valeur en fin de ligne, toutes les traductions au survol, les traductions manquantes et les espaces réservés incorrects signalés avant que vos utilisateurs ne les voient.

Gratuit · Visual Studio 2022 et 2026 · 14 langues d’interface · aucune télémétrie

Pourquoi LocaleSmith

Le même code sans et avec LocaleSmith : clés de ressources et leurs textes

Du code lisible

Strings.InvoiceSaved ne dit pas grand-chose ; « Invoice {0} saved » dit tout. Le texte s’affiche après la ligne, discret, en italique.

Toutes les langues sous la main

Survolez une valeur pour voir toutes ses traductions, ou passez tout l’éditeur en allemand ou en japonais pour voir vos écrans avant de lancer l’application.

Les erreurs avant vos utilisateurs

Traductions manquantes, un {1} absent du texte par défaut, une faute de frappe dans une clé, un string.Format avec trop peu d’arguments — tout est souligné dans le code.

Gratuit, sans contrepartie

Ni abonnement, ni période d’essai, ni écrans de rappel, ni télémétrie. Fonctionne avec Visual Studio 2022 et 2026, x64 et ARM64.

Fonctionnalités

Clés reconnues

Dans le codeOù
Strings.Key, Properties.Resources.KeyC#, Visual Basic, F#
{x:Static res:Strings.Key}XAML (WPF, WinUI, MAUI, Avalonia)
localizer["Key"], @Localizer["Key"]ASP.NET Core et Blazor : IStringLocalizer, IViewLocalizer
GetString("Key")ResourceManager et localiseurs

Toutes les traductions au survol

Laissez le pointeur sur une valeur : la carte affiche la clé dans toutes les langues, les traductions manquantes en jaune. Cliquez sur une langue pour ouvrir son .resx avec la valeur sélectionnée — il suffit de taper par-dessus. Ouvrir dans le .resx et Copier la clé sont en haut.

La carte de survol avec les traductions d’une clé, dont deux manquantes

Problèmes

Les problèmes sont des soulignements ondulés, comme les avertissements du compilateur : tout outil qui affiche les uns affiche aussi les autres — LensSmith les écrit en fin de ligne. Chaque règle peut être désactivée.

Soulignements ondulés sur des clés avec une traduction manquante et un mauvais nombre d’arguments de format
RègleCe qui est souligné
LOC001Une clé absente de certains fichiers de langue, avec la liste de ces langues.
LOC002Une traduction dont les espaces réservés diffèrent de ceux du texte par défaut ; un espace réservé en trop échoue à l’exécution et compte comme une erreur.
LOC003localizer["Key"] ou GetString("Key") avec une clé qu’aucun fichier de ressources ne contient, avec la clé existante la plus proche.
LOC004string.Format(Strings.Key, …) avec moins d’arguments que le texte n’en demande (erreur) ou plus qu’il n’en utilise (avertissement).

Extraire vers une ressource

Placez le curseur dans une chaîne et appuyez sur Ctrl+. — Extraire vers une ressource… propose une clé tirée du texte et le fichier .resx le plus proche. Si le fichier contient déjà ce texte, sa clé est réutilisée. La chaîne est remplacée par Strings.Key (avec l’espace de noms si le fichier ne l’importe pas) ou par {x:Static res:Strings.Key} en XAML, où le xmlns est ajouté pour vous.

La boîte de dialogue Extraire vers une ressource avec la clé et le fichier proposés

Paramètres

Outils → Options → SmithWorks → LocaleSmith. Chaque option est décrite, et l’aperçu en haut affiche immédiatement les valeurs dans la langue choisie.

OptionPar défaut
Afficher les valeurs des ressources à côté des clésactivé
Langue d'aperçuRessources par défaut
Longueur maximale80
Problèmes : LOC001–LOC004tous activés
Extraire vers une ressource dans l'ampouleactivé

Les paramètres sont stockés dans %LocalAppData%\LocaleSmith.

Page d’options de LocaleSmith
La page d’options avec son aperçu en direct.

FAQ

Quels fichiers .resx sont lus ?

Tous les fichiers .resx sous le dossier de la solution (celui du fichier .sln ou .slnx, ou la racine du dépôt), sauf bin, obj et node_modules. Les images et autres ressources non textuelles sont ignorées.

Pourquoi aucune valeur ne s’affiche après une clé ?

La clé doit exister dans un fichier .resx de la solution, et le nom de sa classe doit correspondre au nom du fichier (Strings.resx → Strings ; les points deviennent des traits de soulignement, comme le fait le générateur). Les valeurs apparaissent peu après l’ouverture de la solution, une fois les fichiers lus.

Après l’extraction, la nouvelle propriété est soulignée. Pourquoi ?

La classe fortement typée (Strings.Designer.cs) est régénérée aussitôt si le projet utilise un outil personnalisé pour la produire ; dans les projets qui la génèrent pendant le build, la propriété apparaît après le build suivant.

{x:Static} ne trouve pas ma classe de ressources en XAML.

x:Static exige une classe publique. Réglez le modificateur d’accès du fichier .resx sur Public dans le concepteur de ressources, ou passez par une classe publique intermédiaire.

Fonctionne-t-elle avec LensSmith ?

Oui. Les deux écrivent en fin de ligne et se partagent cet espace : la valeur de la clé d’abord, le message de diagnostic ensuite. Les problèmes de LocaleSmith apparaissent dans LensSmith comme n’importe quel autre avertissement.

LocaleSmith envoie-t-il des données ?

Non. Aucune télémétrie, aucun accès réseau ; vos fichiers de ressources restent sur votre machine.

Où signaler un problème ou proposer une fonctionnalité ?

Ouvrez un ticket dans le dépôt Feedback sur GitHub — il y a des formulaires pour les bogues et les idées (modifiez les noms confidentiels). Vous pouvez aussi utiliser l’onglet Q&A sur le Marketplace.

Historique des versions

1.0.1

1.0.0