Frage

Gibt es eine einfache Möglichkeit, das zu setzen? Localizable Eigenschaft zu wahr für neu erstellte Usercontrols / Formen? Der Umfang der Einstellung sollte idealerweise eine Lösung oder ein Projekt sein.

Mit anderen Worten, ich möchte sagen, dass dieses Projekt/diese Lösung lokalisierbar sein sollte. Wenn ich dann ein neues Formular oder eine neue Steuerung hinzufüge, sollte die Eigenschaft automatisch auf True einstellen.

Bearbeiten:

Obwohl benutzerdefinierte Vorlagen möglich sind, werden sie in einem größeren Team möglicherweise nicht immer verwendet. Daher geht es mehr um die Durchsetzung einer Richtlinie, um sicherzustellen, dass die Teammitglieder die Immobilie nicht für die Projekte/Lösungen festlegen, bei denen alle Formulare/Steuerelemente, die Textressourcen enthalten, lokalisierbar sein sollten.

Notiz: Team Foundation Server ist keine Option.

War es hilfreich?

Lösung

Ich bin mir nicht sicher, ob es sich die Mühe für eine Immobilie lohnt, die sich so leicht verändert und so leicht zu erkennen ist, dass es den falschen Wert hat. Sie können jedoch Ihre eigene Artikelvorlage erstellen.

Zum Beispiel: Projekt + Benutzerregelung hinzufügen. Setzen Sie seine lokalisierbare Eigenschaft auf true. Datei + exportieren Vorlage, wählen Sie Elementvorlage. Nächste. Überprüfen Sie die von Ihnen hinzugefügte Steuerung. Nächste. Überprüfen Sie alle Referenzen, lassen Sie nur diejenigen weg, die Sie nie benötigen. Nächste. Geben Sie es einen guten Vorlagennamen (sagen Sie: "Lokalisierbare Benutzersteuerung").

Sie haben jetzt eine Artikelvorlage für zukünftige Projekte mit dem Immobiliensatz. Wiederholen Sie nach Bedarf für andere Elementvorlagen wie ein Formular.

Andere Tipps

Es ist möglich, einen Unit -Test zu schreiben, bei dem die Reflexion verwendet wird, um festzustellen, ob eine Form/Benutzerkontrolle als lokalisierbar markiert wurde. Wenn ein Typ als lokalisierbar gekennzeichnet ist, gibt es eine eingebettete Ressourcendatei, die dem Typ zugeordnet ist, und diese Datei enthält einen Wert ">> $ this.name". Hier ist ein Beispielcode:

    private void CheckLocalizability()
    {
        try
        {
            Assembly activeAssembly = Assembly.GetAssembly(this.GetType());
            Type[] types = activeAssembly.GetTypes();
            foreach (Type type in types)
            {
                if (TypeIsInheritedFrom(type, "UserControl") || TypeIsInheritedFrom(type, "Form"))
                {
                    bool localizable = false;
                    System.IO.Stream resourceStream = activeAssembly.GetManifestResourceStream(string.Format("{0}.resources", type.FullName));
                    if (resourceStream != null)
                    {
                        System.Resources.ResourceReader resourceReader = new System.Resources.ResourceReader(resourceStream);
                        foreach (DictionaryEntry dictionaryEntry in resourceReader)
                        {
                            if (dictionaryEntry.Key.ToString().Equals(">>$this.Name", StringComparison.InvariantCultureIgnoreCase))
                            {
                                localizable = true;
                                break;
                            }
                        }
                    }
                    if (!localizable)
                    {
                        Debug.Assert(false, string.Format("{0} is not marked localizable.", type.FullName));
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Debug.Assert(false, string.Format("Exception occurred: Unable to check localization settings.  {0}", ex.Message));
        }
    }

    private bool TypeIsInheritedFrom(Type type, string baseType)
    {
        while (type != null)
        {
            if (type.Name.Equals(baseType, StringComparison.InvariantCultureIgnoreCase))
                return true;
            type = type.BaseType;
        }

        return false;
    }

Bitte lassen Sie mich wissen, ob dies hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top