private int getWsFromId(string id)
        {
            // special case, the only few we support so far (and only for a few fields).
            if (id == "best analysis")
            {
                return(WritingSystemServices.kwsFirstAnal);               //LangProject.kwsFirstAnal;
            }
            else if (id == "vern in para")
            {
                return(WritingSystemServices.kwsVernInParagraph);
            }
            Debug.Assert(!XmlViewsUtils.GetWsRequiresObject(id), "Writing system is magic.  These should never be used in the Interlinear area.");

            int ws = -50;

            try
            {
                if (!XmlViewsUtils.GetWsRequiresObject(id))
                {
                    // Try to convert the ws parameter into an int.  Sometimes the parameter
                    // cannot be interpreted without an object, such as when the ws is a magic
                    // string that will change the actual ws depending on the contents of the
                    // object.  In these cases, we give -50 as a known constant to check for.
                    // This can possibly throw an exception, so we'll enclose it in a try block.
                    ws = WritingSystemServices.InterpretWsLabel(m_cache, id, null, 0, 0, null);
                }
            }
            catch
            {
                Debug.Assert(ws != -50, "InterpretWsLabel was not able to interpret the Ws Label.  The most likely cause for this is that a magic ws was passed in.");
            }
            return(ws);
        }