Beispiel #1
0
void wxStaticTextBase::SetLabelText(const wxString& text)
{
    wxString str = text;

    if (HasFlag(wxST_MARKUP))
        str = EscapeMarkup(str);        // escapes markup and the & characters (which are also mnemonics)
    else
        str = EscapeMnemonics(text);    // escape only the mnemonics
    SetLabel(str);
}
Beispiel #2
0
bool Catalog::ExportToHTML(const wxString& filename)
{
    size_t i;
    wxTextFile f;

    if ( wxFileExists(filename) )
    {
        wxRemoveFile ( filename);
    }

    if (!f.Create(filename))
    {
        return false;
    }

    // TODO use some kind of HTML template system to allow different styles

    wxString line;

    // HTML HEADER
    f.AddLine(_T("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">"));
    f.AddLine("<html>");

    f.AddLine("<head>");
    line.Printf("<title> %s - %s - Poedit Export </title>",
                EscapeMarkup(m_header.Project).c_str(),
                EscapeMarkup(m_header.LanguageCode).c_str());
    f.AddLine(line);
    f.AddLine(_T("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">" ) );
    f.AddLine("</head>");
    f.AddLine("<body bgcolor='#FFFFFF'>");

    line.Printf("<h1> %s : %s</h1>",
                EscapeMarkup(m_header.Project).c_str(),
                EscapeMarkup(m_header.LanguageCode).c_str());
    f.AddLine(line);


    // po file header information :

    // String here are duplicates from the ones in setting.xrc
    // TODO find a way if possible to synchronize them

    f.AddLine("<table align=center border=1 cellspacing=2 cellpadding=4>");

    line.Printf("<tr><th colspan=2>%s</th></tr>",
                _("Project info"));
    f.AddLine(line);
    wxString line_format = "<tr><td>%s</td><td>%s</td></tr>";
    line.Printf(line_format,
                _("Project name and version:"),
                EscapeMarkup(m_header.Project).c_str());
    f.AddLine(line);
    line.Printf(line_format, _("Language:"),
                EscapeMarkup(m_header.LanguageCode).c_str());
    f.AddLine(line);
    line.Printf(line_format, _("Team:"),
                EscapeMarkup(m_header.Team).c_str());
    f.AddLine(line);
    line.Printf(_T("<tr><td>%s</td><td><a href=\"mailto:%s\">%s</a></td></tr>"),
                _("Team's email address:"),
                EscapeMarkup(m_header.TeamEmail).c_str(),
                EscapeMarkup(m_header.TeamEmail).c_str());
    f.AddLine(line);
    line.Printf(line_format, _("Charset:"),
                EscapeMarkup(m_header.Charset).c_str());
    f.AddLine(line);

    f.AddLine( "</table>" );
    // statistics

    int all = 0;
    int fuzzy = 0;
    int untranslated = 0;
    int badtokens = 0;
    int unfinished = 0;
    GetStatistics(&all, &fuzzy, &badtokens, &untranslated, &unfinished);

    int percent = (all == 0 ) ? 0 : (100 * (all - unfinished) / all);
    line.Printf(_("%i %% translated, %i strings (%i fuzzy, %i bad tokens, %i not translated)"),
               percent, all, fuzzy, badtokens, untranslated);

    f.AddLine(line);


    // data printed in a table :
    f.AddLine("<table border=1 cellspacing=2 cellpadding=4>");

    f.AddLine("<tr>");
    f.AddLine("<th>");
    f.AddLine(_("Source"));
    f.AddLine("</th>");
    f.AddLine("<th>");
    f.AddLine(_("Translation"));
    f.AddLine("</th>");
    f.AddLine("<th>");
    f.AddLine(_("Notes"));
    f.AddLine("</th>");
    f.AddLine("</tr>");

    for (i = 0; i < GetCount(); i++)
    {
        const CatalogItem& data = m_items[i];

        wxColour bgcolor = g_ItemColourNormal[i % 2];
        wxString source_string = data.GetString();

        wxString translation = data.GetTranslation();
        if (translation.empty())
        {
            translation = " ";
            bgcolor = g_ItemColourUntranslated[i % 2];
        }

        wxString flags;

        if (data.IsAutomatic())
        {
            flags += EscapeMarkup(_("Automatic translation"));
            flags += "<BR>";
        }
        if (data.IsFuzzy())
        {
            bgcolor = g_ItemColourFuzzy[i % 2];
            flags += EscapeMarkup(_("Fuzzy translation"));
            flags += "<BR>";
        }
        if (flags.empty())
        {
            flags = " ";
        }

        wxString tr;
        tr.Printf("<tr bgcolor='#%0X%0X%0X'>",
                  bgcolor.Red(), bgcolor.Green(), bgcolor.Blue());
        f.AddLine(tr);

        f.AddLine("<td>");
        f.AddLine(EscapeMarkup(source_string));
        f.AddLine("</td>");
        f.AddLine("<td>");
        f.AddLine(EscapeMarkup(translation));
        f.AddLine("</td>");
        f.AddLine("<td>");
        f.AddLine(_T("<font size=\"-1\">"));
        f.AddLine(flags);
        f.AddLine("</font>");
        f.AddLine("</td>");
        f.AddLine("</tr>");
    }

    f.AddLine("</table>");
    f.AddLine("</body>");
    f.AddLine("</html>");

    bool written = f.Write(wxTextFileType_None, wxConvUTF8);

    f.Close();

    return written;
}