PoChecker:

- refactor the graphical summary form
  * use TListView with TImageList
- regenerate language files

git-svn-id: trunk@46256 -
This commit is contained in:
bart 2014-09-19 20:29:15 +00:00
parent 0813f5c4ce
commit c78be04ea9
14 changed files with 323 additions and 205 deletions

View File

@ -3,22 +3,75 @@ object GraphStatForm: TGraphStatForm
Height = 544
Top = 116
Width = 636
HorzScrollBar.Page = 602
HorzScrollBar.Range = 4000
HorzScrollBar.Visible = False
VertScrollBar.Page = 510
VertScrollBar.Range = 4000
BorderStyle = bsDialog
Caption = 'Graphical summary'
ClientHeight = 544
ClientWidth = 619
ClientWidth = 636
OnCreate = FormCreate
OnDestroy = FormDestroy
OnShow = FormShow
LCLVersion = '1.3'
object Img: TImage
object LegendPanel: TPanel
Left = 0
Height = 4000
Top = 0
Width = 4000
Height = 80
Top = 464
Width = 636
Align = alBottom
ClientHeight = 80
ClientWidth = 636
TabOrder = 0
object TranslatedShape: TShape
Left = 24
Height = 16
Top = 16
Width = 65
end
object UnTranslatedShape: TShape
Left = 24
Height = 16
Top = 35
Width = 65
end
object FuzzyShape: TShape
Left = 24
Height = 16
Top = 54
Width = 65
end
object TranslatedLabel: TLabel
Left = 104
Height = 15
Top = 17
Width = 83
Caption = 'TranslatedLabel'
ParentColor = False
end
object UnTranslatedLabel: TLabel
Left = 104
Height = 15
Top = 36
Width = 98
Caption = 'UnTranslatedLabel'
ParentColor = False
end
object FuzzyLabel: TLabel
Left = 104
Height = 15
Top = 55
Width = 57
Caption = 'FuzzyLabel'
ParentColor = False
end
end
object ListView: TListView
Left = 40
Height = 150
Top = 32
Width = 250
AutoSort = False
Columns = <>
ReadOnly = True
ScrollBars = ssAutoBoth
TabOrder = 1
ViewStyle = vsIcon
end
end

View File

@ -6,28 +6,31 @@ interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
PoFamilies, PoCheckerConsts, Math, LCLProc;
PoFamilies, PoCheckerConsts, LCLProc, StdCtrls, ComCtrls;
type
{ TGraphStatForm }
TGraphStatForm = class(TForm)
Img: TImage;
ListView: TListView;
TranslatedLabel: TLabel;
UnTranslatedLabel: TLabel;
FuzzyLabel: TLabel;
LegendPanel: TPanel;
TranslatedShape: TShape;
UnTranslatedShape: TShape;
FuzzyShape: TShape;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ private declarations }
WidthPerStat: Integer;
HeightPerStat: Integer;
LegHeight: Integer;
SingleLegItemHeight: Integer;
FPoFamilyStats: TPoFamilyStats;
procedure CalcBoundsRequiredPerStat(out AWidth, AHeight: Integer);
procedure PrepareDimensions;
FImgList: TImageList;
function CreateBitmap(AStat: TStat): TBitmap;
procedure AddToListView(AStat: TStat; ABmp: TBitmap);
procedure DrawGraphs;
procedure DrawGraph(AStat: TStat; ARow, ACol: Integer);
procedure DrawLegenda;
public
{ public declarations }
property PoFamilyStats: TPoFamilyStats read FPoFamilyStats write FPoFamilyStats;
@ -40,213 +43,140 @@ implementation
{$R *.lfm}
const
Radius = 30;
Cols = 4;
clBack = clWhite;
clPie = clForm;
clTrans = clGreen;
clUnTrans = clRed;
clFuzzy = clFuchsia;
clCircle = clBlack;
clTxt = clBlack;
LMargin = 10;
RMargin = 10;
TMargin = 10;
BMargin = 10;
TxtMargin = 5;
LegTMargin = 40;
LegBMargin = 10;
LegLMargin = LMargin;
LegBarHeight = 20;
LegBarWidth = 40;
{ TGraphStatForm }
const
Radius = 40; //when we have anti-aliasing we can reduce this
BmpWH = 2 * Radius;
clBackGround = clWhite;
clTranslated = clGreen;
clUnTranslated = clRed;
clFuzzy = clFuchsia;
{
ListView
@designtime
AutoSort := False
ReadOnly := True
ScrollBars := ssAutoBoth
ViewStyle := vsIcon
@runtime
Color := clBackGround
LargeImages := FImgList;
Align := alClient;
}
procedure TGraphStatForm.FormShow(Sender: TObject);
begin
PrepareDimensions;
DrawGraphs;
DrawLegenda;
end;
procedure TGraphStatForm.FormCreate(Sender: TObject);
begin
Caption := sGrapStatFormCaption;
TranslatedLabel.Caption := sTranslated;
UntranslatedLabel.Caption := sUnTranslated;
FuzzyLabel.Caption := sFuzzy;
TranslatedShape.Brush.Color := clTranslated;
UnTranslatedShape.Brush.Color := clUntranslated;
FuzzyShape.Brush.Color := clFuzzy;
ListView.Color := clBackGround;
ListView.Align := alClient;
end;
procedure TGraphStatForm.CalcBoundsRequiredPerStat(out AWidth, AHeight: Integer);
var
i, TW, TH, MaxTH: Integer;
Stat: TStat;
procedure TGraphStatForm.FormDestroy(Sender: TObject);
begin
AWidth := 2 * Radius;
MaxTH := 0;
for i := 0 to FPoFamilyStats.Count - 1 do
if Assigned(FImgList) then FImgList.Free;
end;
function TGraphStatForm.CreateBitmap(AStat: TStat): TBitmap;
const
FullCircle = 16 * 360;
var
Bmp: TBitmap;
Translated16Angle, UnTranslated16Angle, Fuzzy16Angle: Integer;
PieRect: TRect;
begin
Bmp := TBitmap.Create;
Bmp.SetSize(BmpWH,BmpWH);
PieRect := Rect(0,0,BmpWH, BmpWH);
with Bmp do
begin
Stat := FPoFamilyStats.Items[i];
TW := Img.Canvas.TextWidth(Stat.PoName);
TH := Img.Canvas.TextHeight(Stat.PoName);
if TW > AWidth then AWidth := TW;
if TH > MaxTH then MaxTH := TH;
//Draw background
Canvas.Brush.Color := clBackGround;
Canvas.FillRect(PieRect);
Canvas.Pen.Color := clBackGround;
//All angles in 16th of a degree
Translated16Angle := Round(AStat.FracTranslated * FullCircle);
UnTranslated16Angle := Round(AStat.FracUntranslated * FullCircle);
Fuzzy16Angle := Round(AStat.FracFuzzy * FullCircle);
if Translated16Angle > 0 then
begin
Canvas.Brush.Color:= clTranslated;
if Translated16Angle = FullCircle then
Canvas.Ellipse(PieRect)
else
Canvas.RadialPie(PieRect.Left,PieRect.Top,PieRect.Right,PieRect.Bottom,0,Translated16Angle);;
end;
if UnTranslated16Angle > 0 then
begin
Canvas.Brush.Color:= clUnTranslated;
if UnTranslated16Angle = FullCircle then
Canvas.Ellipse(PieRect)
else
Canvas.RadialPie(PieRect.Left,PieRect.Top,PieRect.Right,PieRect.Bottom,Translated16Angle,UnTranslated16Angle);;
end;
if Fuzzy16Angle > 0 then
begin
Canvas.Brush.Color:= clFuzzy;
if Fuzzy16Angle = FullCircle then
Canvas.Ellipse(PieRect)
else
Canvas.RadialPie(PieRect.Left,PieRect.Top,PieRect.Right,PieRect.Bottom,Translated16Angle+UnTranslated16Angle,Fuzzy16Angle);
end;
end;
//Add margins
AWidth := AWidth + LMargin + RMargin; //L+R
AHeight := TMargin + 2 * Radius + TxtMargin + MaxTH + BMargin; //Top+distance between text and graph+Bottom
//Debugln('TGraphStatForm.CalcBoundsRequiredPerStat: AWidth = ',DbgS(AWidth),' AHeight = ',DbgS(AHeight),' MaxTH = ',DbgS(MaxTH));
Result := Bmp;
end;
procedure TGraphStatForm.PrepareDimensions;
procedure TGraphStatForm.AddToListView(AStat: TStat; ABmp: TBitmap);
var
Rows, IHeight: Integer;
ImgIndex: Integer;
ListItem: TListItem;
begin
CalcBoundsRequiredPerStat(WidthPerStat, HeightPerStat);
Img.Width := Cols * WidthPerStat;
Rows := Ceil(PoFamilyStats.Count / Cols);
IHeight := HeightPerStat * Rows;
SingleLegItemHeight := Max(Img.Canvas.TextHeight('qWM'), LegBarHeight);
LegHeight := LegTMargin + TxtMargin + (3 * SingleLegItemHeight + TxtMargin) + LegBMargin;
IHeight := IHeight + LegHeight;
ClientWidth := Img.Width;
Img.Height := IHeight;
Img.Height := IHeight;
//DebugLn('TGraphStatForm.FormShow: Img.Width -> ',DbgS(Img.Width), ' Canvas.Width = ',DbgS(Img.Canvas.Width));
//DebugLn('TGraphStatForm.FormShow: Img.Height -> ',DbgS(Img.Height),' Canvas.Heigth = ',DbgS(Img.Canvas.Height));
ClientHeight := Min(Screen.Height - 50, Img.Height);
VertScrollBar.Visible := (ClientHeight < Img.Height);
if Top + ClientHeight + 50 > Screen.Height then Top := 0;
ImgIndex := FImgList.AddMasked(ABmp, clBackGround);
ListItem := ListView.Items.Add;
ListItem.Caption := AStat.PoName;
ListItem.ImageIndex := ImgIndex;
end;
procedure TGraphStatForm.DrawGraphs;
var
Index, ARow, ACol: Integer;
Bmp: TBitmap;
AStat: TStat;
Index: Integer;
begin
//debugln('TGraphStatForm.DrawGraphs: FPoFamilyStats.Count = ',DbgS(FPoFamilyStats.Count));
Img.Canvas.Brush.Color := clBack;
Img.Canvas.Clear;
Img.Canvas.FillRect(0,0,Img.Width,Img.Height);
for Index := 0 to FPoFamilyStats.Count - 1 do
begin
ARow := Index mod Cols;
ACol := Index div Cols;
DrawGraph(FPoFamilyStats.Items[Index], ARow, ACol);
end;
end;
procedure TGraphStatForm.DrawGraph(AStat: TStat; ARow, ACol: Integer);
var
X,Y, TW: Integer;
Origo: TPoint;
OrigoCol, PixCol: TColor;
begin
//debugln('TGraphStatForm.DrawGraph: PoName = ',DbgS(AStat.PoName));
Origo.X := (ARow * WidthPerStat) + (WidthPerStat div 2);
Origo.Y := (ACol * HeightPerStat) + Radius + TMargin;
//debugln('TGraphStatForm.DrawGraph: ARow = ',DbgS(ARow),' ACol = ',DbgS(ACol));
//debugln('TGraphStatForm.DrawGraph: Origo.X = ',DbgS(Origo.X),' Origo.Y = ',DbgS(Origo.Y));
{
Img.Canvas.Pen.Color := clCircle;
Img.Canvas.Brush.Color := clPie;
Img.Canvas.EllipseC(Origo.X,Origo.Y,Radius,Radius);
}
with Img do
begin
//First draw a circle
Canvas.Brush.Color := clPie;
Canvas.Pen.Color := clCircle;
Canvas.EllipseC(Origo.X,Origo.Y,Radius,Radius);
//Draw the Translated section
Canvas.MoveTo(Origo);
Canvas.LineTo(Origo.X + Radius, Origo.Y);
Canvas.MoveTo(Origo);
X := Origo.X + Round(Cos(AStat.FracTranslated * (2 * pi)) * Radius);
Y := Origo.Y - Round(Sin(AStat.FracTranslated * (2 * pi)) * Radius);
Canvas.LineTo(X, Y);
OrigoCol := Canvas.Pixels[Origo.X,Origo.Y];
//Calculate a point inside the section
X := Origo.X + Round(Cos((AStat.FracTranslated/2) * (2 * pi)) * (Radius - 3));
Y := Origo.Y - Round(Sin((AStat.FracTranslated/2) * (2 * pi)) * (Radius - 3));
Canvas.Brush.Color := clTrans;
PixCol := Canvas.Pixels[X,Y];
//Don't FloodFill if the section has no visible pixels on the screen
if (PixCol <> OrigoCol) then Canvas.FloodFill(X,Y,PixCol,fsSurface);
//Draw the UnTranslated section
Canvas.MoveTo(Origo);
X := Origo.X + Round(Cos((AStat.FracTranslated+AStat.FracUnTranslated) * 2 * pi) * Radius);
Y := Origo.Y - Round(Sin((AStat.FracTranslated+AStat.FracUnTranslated) * 2 * pi) * Radius);
Canvas.LineTo(X, Y);
//Calculate a point inside the section
X := Origo.X + Round(Cos((AStat.FracTranslated+AStat.FracUnTranslated/2) * (2 * pi)) * (Radius - 3));
Y := Origo.Y - Round(Sin((AStat.FracTranslated+AStat.FracUnTranslated/2) * (2 * pi)) * (Radius - 3));
Canvas.Brush.Color := clUnTrans;
PixCol := Canvas.Pixels[X,Y];
//Don't FloodFill if the section has no visible pixels on the screen
if (PixCol <> OrigoCol) then Canvas.FloodFill(X,Y,PixCol,fsSurface);
//Draw the Fuzzy section
Canvas.MoveTo(Origo);
X := Origo.X + Round(Cos((AStat.FracTranslated+AStat.FracUnTranslated+AStat.FracFuzzy) * 2 * pi) * Radius);
Y := Origo.Y - Round(Sin((AStat.FracTranslated+AStat.FracUnTranslated+AStat.FracFuzzy) * 2 * pi) * Radius);
Canvas.LineTo(X, Y);
//Calculate a point inside the section
X := Origo.X + Round(Cos((AStat.FracTranslated+AStat.FracUnTranslated+AStat.FracFuzzy/2) * (2 * pi)) * (Radius - 3));
Y := Origo.Y - Round(Sin((AStat.FracTranslated+AStat.FracUnTranslated+AStat.FracFuzzy/2) * (2 * pi)) * (Radius - 3));
Canvas.Brush.Color := clFuzzy;
PixCol := Canvas.Pixels[X,Y];
//Don't FloodFill if the section has no visible pixels on the screen
if (PixCol <> OrigoCol) then Canvas.FloodFill(X,Y,PixCol,fsSurface);
//Draw the text
TW := Canvas.TextWidth(AStat.PoName);
X := Origo.X - (TW div 2);
Y := Origo.Y + Radius + TxtMargin;
Canvas.Pen.Color := clTxt;
Canvas.Brush.Color := clBack;
Canvas.TextOut(X, Y, AStat.PoName);
end;
end;
procedure TGraphStatForm.DrawLegenda;
var
X, Y, LegTop, TH: Integer;
begin
LegTop := Img.Height - LegHeight;
//Debugln('TGraphStatForm.DrawLegenda: LegTop = ',DbgS(LegTop));
with Img do
begin
TH := Canvas.TextHeight('qWM');
X := LegLMargin;
Y := LegTop;
Canvas.Pen.Color := clTxt;
Canvas.MoveTo(LegLMargin, LegTop);
Canvas.LineTo(Img.Width - LegLMargin, LegTop);
Y := Y + TxtMargin;
Canvas.Brush.Color := clTrans;
Canvas.FillRect(X,Y,X+LegBarWidth,Y+LegBarHeight);
Canvas.Brush.Color := clBack;
Canvas.TextOut(X + LegBarWidth + TxtMargin, Y + ((LegBarHeight - TH) div 2), 'Translated');
Y := Y + SingleLegItemHeight + TxtMargin;
Canvas.Brush.Color := clUnTrans;
Canvas.FillRect(X,Y,X+LegBarWidth,Y+LegBarHeight);
Canvas.Brush.Color := clBack;
Canvas.TextOut(X + LegBarWidth + TxtMargin, Y + ((LegBarHeight - TH) div 2), 'Untranslated');
Y := Y + SingleLegItemHeight + TxtMargin;
Canvas.Brush.Color := clFuzzy;
Canvas.FillRect(X,Y,X+LegBarWidth,Y+LegBarHeight);
Canvas.Brush.Color := clBack;
Canvas.TextOut(X + LegBarWidth + TxtMargin, Y + ((LegBarHeight - TH) div 2), 'Fuzzy');
if Assigned(FImgList) then FImgList.Free;
FImgList := TImageList.CreateSize(BmpWH, BmpWH);
ListView.LargeImages := FImgList;
ListView.BeginUpdate;
try
for Index := 0 to FPoFamilyStats.Count - 1 do
begin
AStat := FPoFamilyStats.Items[Index];
Bmp := CreateBitmap(AStat);
AddToListView(AStat, Bmp);
Bmp.Free;
end;
finally
ListView.EndUpdate;
end;
end;

View File

@ -99,6 +99,10 @@ msgstr "Chyby / varování nahlášené %s pro:"
msgid "Find all translated po-files"
msgstr "Najít všechny přeložené po soubory"
#: pocheckerconsts.sfuzzy
msgid "Fuzzy"
msgstr ""
#: pocheckerconsts.sgrapstatformcaption
msgid "Graphical summary"
msgstr ""
@ -244,6 +248,10 @@ msgstr "Nalezeno celkem %d chyb / varování."
msgid "Total warnings found: %d"
msgstr "Celkem nalezeno varování: %d"
#: pocheckerconsts.stranslated
msgid "Translated"
msgstr ""
#: pocheckerconsts.stranslation
msgid "Translation"
msgstr "Překlad"
@ -258,3 +266,7 @@ msgstr "Statistiky překladu pro:"
msgid "&Unselect All"
msgstr ""
#: pocheckerconsts.suntranslated
msgid "Untranslated"
msgstr ""

View File

@ -68,8 +68,7 @@ msgstr "[Zeile %d] %s"
#: pocheckerconsts.sduplicateoriginals
msgid "The (untranslated) value \"%s\" is used for more than 1 entry:"
msgstr ""
"Der (nicht übersetzte) Wert \"%s\" wird für mehr als 1 Eintrag verwendet:"
msgstr "Der (nicht übersetzte) Wert \"%s\" wird für mehr als 1 Eintrag verwendet:"
#: pocheckerconsts.serroroncleanup
msgid ""
@ -97,6 +96,10 @@ msgstr "Fehler / Warnungen gemeldet von %s für:"
msgid "Find all translated po-files"
msgstr "Alle übersetzten po-Dateien finden"
#: pocheckerconsts.sfuzzy
msgid "Fuzzy"
msgstr ""
#: pocheckerconsts.sgrapstatformcaption
msgid "Graphical summary"
msgstr "Graphischer Überblick"
@ -237,6 +240,10 @@ msgstr "Insgesamt %d Fehler gefunden"
msgid "Total warnings found: %d"
msgstr "Insgesamt %d Warnungen gefunden"
#: pocheckerconsts.stranslated
msgid "Translated"
msgstr ""
#: pocheckerconsts.stranslation
msgid "Translation"
msgstr "Übersetzung"
@ -249,3 +256,8 @@ msgstr "Übersetzungsstatistikpro Sprache:"
#: pocheckerconsts.sunselectalltests
msgid "&Unselect All"
msgstr "Alle abwählen"
#: pocheckerconsts.suntranslated
msgid "Untranslated"
msgstr ""

View File

@ -95,6 +95,10 @@ msgstr "Errores / advertencias reportadas por %s para:"
msgid "Find all translated po-files"
msgstr "Encontrar todos los archivos PO traducidos"
#: pocheckerconsts.sfuzzy
msgid "Fuzzy"
msgstr ""
#: pocheckerconsts.sgrapstatformcaption
msgid "Graphical summary"
msgstr ""
@ -235,6 +239,10 @@ msgstr "Total de errores / advertencias encontraron: %d"
msgid "Total warnings found: %d"
msgstr "Total de avisos encontrados: %d"
#: pocheckerconsts.stranslated
msgid "Translated"
msgstr ""
#: pocheckerconsts.stranslation
msgid "Translation"
msgstr "Traducción"
@ -247,3 +255,7 @@ msgstr ""
msgid "&Unselect All"
msgstr ""
#: pocheckerconsts.suntranslated
msgid "Untranslated"
msgstr ""

View File

@ -97,6 +97,10 @@ msgstr "A(z) %s hibákat / figyelmeztetéseket jelzett ezzel kapcsolatban:"
msgid "Find all translated po-files"
msgstr "Az összes lefordított po-fájl megkeresése"
#: pocheckerconsts.sfuzzy
msgid "Fuzzy"
msgstr ""
#: pocheckerconsts.sgrapstatformcaption
msgid "Graphical summary"
msgstr ""
@ -240,6 +244,10 @@ msgstr "Összes hiba / figyelmeztetés: %d"
msgid "Total warnings found: %d"
msgstr "Összes figyelmeztetés: %d"
#: pocheckerconsts.stranslated
msgid "Translated"
msgstr ""
#: pocheckerconsts.stranslation
msgid "Translation"
msgstr "Fordítás"
@ -254,3 +262,7 @@ msgstr "Fordítási statisztika ehhez:"
msgid "&Unselect All"
msgstr "Kijelölések törlése"
#: pocheckerconsts.suntranslated
msgid "Untranslated"
msgstr ""

View File

@ -95,6 +95,10 @@ msgstr "Errori / avvertimenti riportati da %s per:"
msgid "Find all translated po-files"
msgstr "Trova tutti i file po tradotti"
#: pocheckerconsts.sfuzzy
msgid "Fuzzy"
msgstr ""
#: pocheckerconsts.sgrapstatformcaption
msgid "Graphical summary"
msgstr ""
@ -237,6 +241,10 @@ msgstr "Totale errori / avvertimenti: %d"
msgid "Total warnings found: %d"
msgstr "Totale avvertimenti: %d"
#: pocheckerconsts.stranslated
msgid "Translated"
msgstr ""
#: pocheckerconsts.stranslation
msgid "Translation"
msgstr "Traduzione"
@ -251,3 +259,7 @@ msgstr "Statistiche di traduzione per:"
msgid "&Unselect All"
msgstr "&Deseleziona tutto"
#: pocheckerconsts.suntranslated
msgid "Untranslated"
msgstr ""

View File

@ -97,6 +97,10 @@ msgstr "以下のファイルに対する %s によるエラー/警告の結
msgid "Find all translated po-files"
msgstr "翻訳されたすべての po ファイルを検査する"
#: pocheckerconsts.sfuzzy
msgid "Fuzzy"
msgstr ""
#: pocheckerconsts.sgrapstatformcaption
msgid "Graphical summary"
msgstr ""
@ -241,6 +245,10 @@ msgstr "エラー/警告の総数:%d"
msgid "Total warnings found: %d"
msgstr "警告の総数:%d"
#: pocheckerconsts.stranslated
msgid "Translated"
msgstr ""
#: pocheckerconsts.stranslation
msgid "Translation"
msgstr "訳文"
@ -255,3 +263,7 @@ msgstr "翻訳状況:"
msgid "&Unselect All"
msgstr ""
#: pocheckerconsts.suntranslated
msgid "Untranslated"
msgstr ""

View File

@ -97,6 +97,10 @@ msgstr "%s praneštos klaidos/perspėjimai apie:"
msgid "Find all translated po-files"
msgstr "Rasti visus išverstus PO failus"
#: pocheckerconsts.sfuzzy
msgid "Fuzzy"
msgstr ""
#: pocheckerconsts.sgrapstatformcaption
msgid "Graphical summary"
msgstr ""
@ -235,6 +239,10 @@ msgstr "Viso rasta klaidų/perspėjimų: %d"
msgid "Total warnings found: %d"
msgstr "Viso rasta perspėjimų: %d"
#: pocheckerconsts.stranslated
msgid "Translated"
msgstr ""
#: pocheckerconsts.stranslation
msgid "Translation"
msgstr "Vertimas"
@ -247,3 +255,7 @@ msgstr ""
msgid "&Unselect All"
msgstr ""
#: pocheckerconsts.suntranslated
msgid "Untranslated"
msgstr ""

View File

@ -78,6 +78,10 @@ msgstr ""
msgid "Find all translated po-files"
msgstr ""
#: pocheckerconsts.sfuzzy
msgid "Fuzzy"
msgstr ""
#: pocheckerconsts.sgrapstatformcaption
msgid "Graphical summary"
msgstr ""
@ -207,6 +211,10 @@ msgstr ""
msgid "Total warnings found: %d"
msgstr ""
#: pocheckerconsts.stranslated
msgid "Translated"
msgstr ""
#: pocheckerconsts.stranslation
msgid "Translation"
msgstr ""
@ -219,3 +227,7 @@ msgstr ""
msgid "&Unselect All"
msgstr ""
#: pocheckerconsts.suntranslated
msgid "Untranslated"
msgstr ""

View File

@ -96,6 +96,10 @@ msgstr "Erros / avisos reportados por %s para:"
msgid "Find all translated po-files"
msgstr "Localizar todos os arquivos po traduzidos"
#: pocheckerconsts.sfuzzy
msgid "Fuzzy"
msgstr ""
#: pocheckerconsts.sgrapstatformcaption
msgid "Graphical summary"
msgstr ""
@ -235,6 +239,10 @@ msgstr "Total de erros / avisos encontrados: %d"
msgid "Total warnings found: %d"
msgstr "Total de avisos encontrados: %d"
#: pocheckerconsts.stranslated
msgid "Translated"
msgstr ""
#: pocheckerconsts.stranslation
msgid "Translation"
msgstr "Tradução"
@ -247,3 +255,7 @@ msgstr ""
msgid "&Unselect All"
msgstr ""
#: pocheckerconsts.suntranslated
msgid "Untranslated"
msgstr ""

View File

@ -95,6 +95,10 @@ msgstr "Ошибки и предупреждения, найденные %s дл
msgid "Find all translated po-files"
msgstr "Найти все переведённые файлы PO"
#: pocheckerconsts.sfuzzy
msgid "Fuzzy"
msgstr ""
#: pocheckerconsts.sgrapstatformcaption
msgid "Graphical summary"
msgstr ""
@ -239,6 +243,10 @@ msgstr "Всего найдено ошибок: %d"
msgid "Total warnings found: %d"
msgstr "Всего найдено предупреждений: %d"
#: pocheckerconsts.stranslated
msgid "Translated"
msgstr ""
#: pocheckerconsts.stranslation
msgid "Translation"
msgstr "Перевод"
@ -254,3 +262,7 @@ msgstr "Статистика перевода для:"
msgid "&Unselect All"
msgstr "&Снять выбор"
#: pocheckerconsts.suntranslated
msgid "Untranslated"
msgstr ""

View File

@ -94,6 +94,10 @@ msgstr "Помилки / попередження звітовані %s для:"
msgid "Find all translated po-files"
msgstr "Знайти всі перекладені po-файли"
#: pocheckerconsts.sfuzzy
msgid "Fuzzy"
msgstr ""
#: pocheckerconsts.sgrapstatformcaption
msgid "Graphical summary"
msgstr ""
@ -232,6 +236,10 @@ msgstr "Знайдено всього помилок / попереджень: %
msgid "Total warnings found: %d"
msgstr "Знайдено всього попереджень: %d"
#: pocheckerconsts.stranslated
msgid "Translated"
msgstr ""
#: pocheckerconsts.stranslation
msgid "Translation"
msgstr "Переклад"
@ -244,3 +252,7 @@ msgstr ""
msgid "&Unselect All"
msgstr ""
#: pocheckerconsts.suntranslated
msgid "Untranslated"
msgstr ""

View File

@ -35,6 +35,9 @@ resourcestring
//Graphical summary form
sGrapStatFormCaption = 'Graphical summary';
sTranslated = 'Translated';
sUntranslated = 'Untranslated';
sFuzzy = 'Fuzzy';
//PoFamiles
sOriginal = 'Original';