wiki: added translation links

git-svn-id: trunk@35889 -
This commit is contained in:
mattias 2012-03-11 15:14:13 +00:00
parent 3fff6d9bba
commit 49ec170b4e
5 changed files with 242 additions and 106 deletions

View File

@ -59,10 +59,13 @@ type
TWiki2XHTMLConverter = class(TWiki2FormatConverter)
private
FAddLinksToTranslations: boolean;
FCSSFilename: string;
FLinkToBaseDocument: string;
FMaxH: integer;
FPageFileExt: string;
procedure DoAddLinksToTranslations(var doc: TXMLDocument;
var Page: TW2XHTMLPage);
procedure SetCSSFilename(AValue: string);
procedure SetMaxH(AValue: integer);
procedure SetPageFileExt(AValue: string);
@ -94,6 +97,7 @@ type
function PageToFilename(Page: TW2XHTMLPage; Full: boolean): string; virtual;
property PageFileExt: string read FPageFileExt write SetPageFileExt;
property LinkToBaseDocument: string read FLinkToBaseDocument write FLinkToBaseDocument;
property AddLinksToTranslations: boolean read FAddLinksToTranslations write FAddLinksToTranslations;
end;
implementation
@ -106,6 +110,62 @@ begin
FCSSFilename:=AValue;
end;
procedure TWiki2XHTMLConverter.DoAddLinksToTranslations(var doc: TXMLDocument;
var Page: TW2XHTMLPage);
var
TranslationPage: TW2XHTMLPage;
Lang: String;
S2PItem: PStringToPointerTreeItem;
LangToPage: TStringToPointerTree;
TranslationsNode: TDOMElement;
LinkCaption: String;
LinkNode: TDOMElement;
Captions: TStringList;
i: Integer;
begin
GetPageTranslations(Page.WikiDocumentName, LangToPage);
debugln(['TWiki2XHTMLConverter.DoAddLinksToTranslations ',Page.WikiDocumentName,' ',LangToPage.Count]);
Captions:=TStringList.Create;
try
if (LangToPage=nil) or (LangToPage.Count<2) then exit;
// add translations
TranslationsNode:=doc.CreateElement('p');
TranslationsNode.SetAttribute('class','translationLinks');
Page.BodyDOMNode.AppendChild(TranslationsNode);
// get all translations
for S2PItem in LangToPage do begin
Lang:=S2PItem^.Name;
TranslationPage:=TW2XHTMLPage(S2PItem^.Value);
LinkCaption:=WikiLangCodeToCaption(Lang);
if Lang<>'' then LinkCaption+=' ('+Lang+')';
Captions.AddObject(LinkCaption,TranslationPage);
end;
// sort them alphabetically
Captions.CustomSort(@CompareStrListUTF8LowerCase);
// add links
for i:=0 to Captions.Count-1 do begin
LinkCaption:=Captions[i];
TranslationPage:=TW2XHTMLPage(Captions.Objects[i]);
// add separator |
if TranslationsNode.FirstChild<>nil then
TranslationsNode.AppendChild(doc.CreateTextNode(' | '));
if TranslationPage=Page then
// add current page as normal text
TranslationsNode.AppendChild(doc.CreateTextNode(LinkCaption))
else begin
// add link to other translations
LinkNode:=doc.CreateElement('a');
LinkNode.SetAttribute('href',TranslationPage.WikiDocumentName);
TranslationsNode.AppendChild(LinkNode);
LinkNode.AppendChild(doc.CreateTextNode(LinkCaption));
end;
end;
finally
LangToPage.Free;
Captions.Free;
end;
end;
procedure TWiki2XHTMLConverter.SetMaxH(AValue: integer);
begin
if AValue<1 then AValue:=1;
@ -306,6 +366,10 @@ begin
Node.SetAttribute('class','firstHeading');
Node.AppendChild(doc.CreateTextNode(Page.WikiPage.Title));
// links to translations
if AddLinksToTranslations then
DoAddLinksToTranslations(doc,Page);
try
Page.SectionLevel:=0;
Page.CurDOMNode:=Page.BodyDOMNode;
@ -770,7 +834,8 @@ begin
FPageFileExt:='.xhtml';
ShortFilenameToPage:=TFilenameToPointerTree.Create(false);
UsedImages:=TFilenameToPointerTree.Create(false);
LinkToBaseDocument:='Online version';
fLinkToBaseDocument:='Online version';
FAddLinksToTranslations:=true;
end;
destructor TWiki2XHTMLConverter.Destroy;

View File

@ -25,8 +25,9 @@ unit WikiFormat;
interface
uses
Classes, SysUtils, WikiParser, laz2_XMLRead, LazFileUtils, laz2_DOM,
LazLogger, LazUTF8, AvgLvlTree, KeywordFuncLists, CodeToolsStructs;
Classes, SysUtils, WikiParser, WikiStrConsts, laz2_XMLRead, LazFileUtils,
laz2_DOM, LazLogger, LazUTF8, AvgLvlTree, KeywordFuncLists, CodeToolsStructs,
BasicCodeTools;
type
TWiki2FormatConverter = class;
@ -41,10 +42,12 @@ type
WikiDoc: TXMLDocument;
WikiPage: TWikiPage;
WikiDocumentName: string; // the path in the Wiki
WikiLanguage: string;
constructor Create(TheConverter: TWiki2FormatConverter); virtual;
destructor Destroy; override;
procedure ParseWikiDoc(KeepWikiDoc: boolean);
procedure ClearConversion; virtual;
procedure ClearPageConnections; virtual;
end;
TW2FormatPageClass = class of TW2FormatPage;
@ -88,22 +91,30 @@ type
property NoWarnBaseURLs: TStringToStringTree read FNoWarnBaseURLs;
property CodeTags: TKeyWordFunctionList read FCodeTags write FCodeTags;
function CollectAllLangCodes(Delimiter: char = ','): string;
procedure GetPageTranslations(DocumentName: string; out LangToPage: TStringToPointerTree);
end;
function WikiPageToFilename(Page: string; IsInternalLink, AppendCaseID: boolean): string;
function WikiPageToFilename(DocumentName: string; IsInternalLink, AppendCaseID: boolean): string;
function WikiFilenameToPage(Filename: string): string;
function WikiImageToFilename(Image: string; IsInternalLink, InsertCaseID: boolean;
KeepScheme: boolean = false): string;
function WikiHeaderToLink(Header: string): string;
function WikiCreateCommonCodeTagList(AddLazWikiLangs: boolean): TKeyWordFunctionList;
function GetWikiPageLanguage(const Page: string): string;
function WikiPageHasLanguage(const Page, Languages: string): boolean;
// language
function GetWikiPageLanguage(const DocumentName: string): string;
function GetWikiPageLanguageDelimiterPos(const DocumentName: string): integer;
function ChompWikiPageLanguage(const DocumentName: string): string;
function WikiPageHasLanguage(const DocumentName, Languages: string): boolean;
function WikiLangInLanguageFilter(const Lang, Languages: string): boolean;
function WikiLangCodeToCaption(ID: string): string;
function WikiLangCaptionToCode(Caption: string): string;
function ComparePagesWithFilenames(Page1, Page2: Pointer): integer;
function CompareFilenameWithPage(Filename, Page: Pointer): integer;
function ComparePagesWithDocumentNames(Page1, Page2: Pointer): integer;
function CompareDocumentNameWithPage(DocumentName, Page: Pointer): integer;
function CompareDocumentNameWithPageIgnoreLang(DocumentName, Page: Pointer): integer;
implementation
@ -205,6 +216,7 @@ begin
Result:=PageClass.Create(Self);
Result.WikiFilename:=Filename;
Result.WikiDocumentName:=WikiFilenameToPage(Filename);
Result.WikiLanguage:=GetWikiPageLanguage(Result.WikiDocumentName);
fPages.Add(Result);
fPagesSortFilename.Add(Result);
fPagesSortDocumentName.Add(Result);
@ -254,7 +266,7 @@ begin
try
for i:=0 to Count-1 do begin
Page:=Pages[i];
Lang:=GetWikiPageLanguage(Page.WikiDocumentName);
Lang:=Page.WikiLanguage;
if Lang='' then continue;
if Langs.Contains(Lang) then continue;
Langs[Lang]:='1';
@ -265,6 +277,23 @@ begin
end;
end;
procedure TWiki2FormatConverter.GetPageTranslations(DocumentName: string; out
LangToPage: TStringToPointerTree);
var
AVLNode: TAvgLvlTreeNode;
Page: TW2FormatPage;
begin
LangToPage:=TStringToPointerTree.Create(false);
DocumentName:=ChompWikiPageLanguage(DocumentName);
AVLNode:=fPagesSortDocumentName.FindLeftMostKey(Pointer(DocumentName),@CompareDocumentNameWithPageIgnoreLang);
while (AVLNode<>nil)
and (CompareDocumentNameWithPageIgnoreLang(Pointer(DocumentName),AVLNode.Data)=0) do begin
Page:=TW2FormatPage(AVLNode.Data);
LangToPage[GetWikiPageLanguage(Page.WikiDocumentName)]:=Page;
AVLNode:=fPagesSortDocumentName.FindSuccessor(AVLNode);
end;
end;
{ TW2FormatPage }
constructor TW2FormatPage.Create(TheConverter: TWiki2FormatConverter);
@ -274,6 +303,7 @@ end;
destructor TW2FormatPage.Destroy;
begin
ClearPageConnections;
ClearConversion;
FreeAndNil(WikiDoc);
FreeAndNil(WikiPage);
@ -317,12 +347,16 @@ begin
end;
function WikiPageToFilename(Page: string; IsInternalLink, AppendCaseID: boolean): string;
procedure TW2FormatPage.ClearPageConnections;
begin
end;
function WikiPageToFilename(DocumentName: string; IsInternalLink, AppendCaseID: boolean): string;
var
i: Integer;
s: string;
begin
Result:=Page;
Result:=DocumentName;
if IsInternalLink then
Result:=WikiInternalLinkToPage(Result);
i:=1;
@ -450,36 +484,58 @@ begin
end;
end;
function GetWikiPageLanguage(const Page: string): string;
function GetWikiPageLanguage(const DocumentName: string): string;
var
p: Integer;
begin
p:=GetWikiPageLanguageDelimiterPos(DocumentName);
if p>0 then
Result:=copy(DocumentName,p+1,length(DocumentName))
else
Result:='';
end;
function GetWikiPageLanguageDelimiterPos(const DocumentName: string): integer;
var
l: Integer;
p: PChar;
begin
Result:='';
l:=length(Page);
Result:=0;
l:=length(DocumentName);
if l=0 then exit;
if (l>3) then begin
p:=PChar(Page)+l-3;
p:=PChar(DocumentName)+l-3;
if (p^='/')
and (p[1] in ['a'..'z']) and (p[2] in ['a'..'z']) then
// short form: /de
exit(RightStr(Page,2));
exit(l-2);
end;
if (l>6) then begin
p:=PChar(Page)+l-6;
p:=PChar(DocumentName)+l-6;
if (p^='/')
and (p[1] in ['a'..'z']) and (p[2] in ['a'..'z'])
and (p[3]='_')
and (p[4] in ['A'..'Z']) and (p[5] in ['A'..'Z'])
then
// long form: /zh_TW
exit(RightStr(Page,5));
exit(l-5);
end;
end;
function WikiPageHasLanguage(const Page, Languages: string): boolean;
function ChompWikiPageLanguage(const DocumentName: string): string;
var
p: Integer;
begin
Result:=WikiLangInLanguageFilter(GetWikiPageLanguage(Page),Languages);
p:=GetWikiPageLanguageDelimiterPos(DocumentName);
if p>0 then
Result:=LeftStr(DocumentName,p-1)
else
Result:=DocumentName;
end;
function WikiPageHasLanguage(const DocumentName, Languages: string): boolean;
begin
Result:=WikiLangInLanguageFilter(GetWikiPageLanguage(DocumentName),Languages);
end;
function WikiLangInLanguageFilter(const Lang, Languages: string): boolean;
@ -514,6 +570,80 @@ begin
Result:=false;
end;
function WikiLangCodeToCaption(ID: string): string;
begin
if ID='' then Result:=wrsLanguageEnglishOriginal
else if ID='*' then Result:=wrsAll
else if CompareText(ID,'af')=0 then Result:=wrsLanguageAfrikaans
else if CompareText(ID,'ar')=0 then Result:=wrsLanguageArabic
else if CompareText(ID,'ca')=0 then Result:=wrsLanguageCatalan
else if CompareText(ID,'cs')=0 then Result:=wrsLanguageCzech
else if CompareText(ID,'de')=0 then Result:=wrsLanguageGerman
else if CompareText(ID,'en')=0 then Result:=wrsLanguageEnglish
else if CompareText(ID,'es')=0 then Result:=wrsLanguageSpanish
else if CompareText(ID,'fa')=0 then Result:=wrsLanguagePersian
else if CompareText(ID,'fi')=0 then Result:=wrsLanguageFinnish
else if CompareText(ID,'fr')=0 then Result:=wrsLanguageFrench
else if CompareText(ID,'he')=0 then Result:=wrsLanguageHebrew
else if CompareText(ID,'hu')=0 then Result:=wrsLanguageHungarian
else if CompareText(ID,'id')=0 then Result:=wrsLanguageIndonesian
else if CompareText(ID,'it')=0 then Result:=wrsLanguageItalian
else if CompareText(ID,'ja')=0 then Result:=wrsLanguageJapanese
else if CompareText(ID,'ko')=0 then Result:=wrsLanguageKorean
else if CompareText(ID,'lt')=0 then Result:=wrsLanguageLithuanian
else if CompareText(ID,'mk')=0 then Result:=wrsLanguageMacedonien
else if CompareText(ID,'nl')=0 then Result:=wrsLanguageDutch
else if CompareText(ID,'pl')=0 then Result:=wrsLanguagePolish
else if CompareText(ID,'pt')=0 then Result:=wrsLanguagePortuguese
else if CompareText(ID,'pt_BR')=0 then Result:=wrsLanguagePortugueseBr
else if CompareText(ID,'ro')=0 then Result:=wrsLanguageRomanian
else if CompareText(ID,'ru')=0 then Result:=wrsLanguageRussian
else if CompareText(ID,'sk')=0 then Result:=wrsLanguageSlovak
else if CompareText(ID,'sq')=0 then Result:=wrsLanguageAlbania
else if CompareText(ID,'tr')=0 then Result:=wrsLanguageTurkish
else if CompareText(ID,'uk')=0 then Result:=wrsLanguageUkrainian
else if CompareText(ID,'zh_CN')=0 then Result:=wrsLanguageChinese
else if CompareText(ID,'zh_TW')=0 then Result:=wrsLanguageChineseTaiwan
else Result:=ID;
end;
function WikiLangCaptionToCode(Caption: string): string;
begin
if Caption=wrsLanguageEnglishOriginal then Result:=''
else if Caption=wrsAll then Result:='*'
else if Caption=wrsLanguageAfrikaans then Result:='af'
else if Caption=wrsLanguageAlbania then Result:='sq'
else if Caption=wrsLanguageArabic then Result:='ar'
else if Caption=wrsLanguageCatalan then Result:='ca'
else if Caption=wrsLanguageChinese then Result:='zh_CN'
else if Caption=wrsLanguageChineseTaiwan then Result:='zh_TW'
else if Caption=wrsLanguageCzech then Result:='cs'
else if Caption=wrsLanguageDutch then Result:='nl'
else if Caption=wrsLanguageEnglish then Result:='en'
else if Caption=wrsLanguageFinnish then Result:='fi'
else if Caption=wrsLanguageFrench then Result:='fr'
else if Caption=wrsLanguageGerman then Result:='de'
else if Caption=wrsLanguageHebrew then Result:='he'
else if Caption=wrsLanguageHungarian then Result:='hu'
else if Caption=wrsLanguageIndonesian then Result:='id'
else if Caption=wrsLanguageItalian then Result:='it'
else if Caption=wrsLanguageJapanese then Result:='ja'
else if Caption=wrsLanguageKorean then Result:='ko'
else if Caption=wrsLanguageLithuanian then Result:='lt'
else if Caption=wrsLanguageMacedonien then Result:='mk'
else if Caption=wrsLanguagePersian then Result:='fa'
else if Caption=wrsLanguagePolish then Result:='pl'
else if Caption=wrsLanguagePortuguese then Result:='pt'
else if Caption=wrsLanguagePortugueseBr then Result:='pt_BR'
else if Caption=wrsLanguageRomanian then Result:='ro'
else if Caption=wrsLanguageRussian then Result:='ru'
else if Caption=wrsLanguageSlovak then Result:='sk'
else if Caption=wrsLanguageSpanish then Result:='es'
else if Caption=wrsLanguageTurkish then Result:='tk'
else if Caption=wrsLanguageUkrainian then Result:='uk'
else Result:=Caption;
end;
function ComparePagesWithFilenames(Page1, Page2: Pointer): integer;
var
p1: TW2FormatPage absolute Page1;
@ -534,14 +664,31 @@ var
p1: TW2FormatPage absolute Page1;
p2: TW2FormatPage absolute Page2;
begin
Result:=CompareStr(p1.WikiDocumentName,p2.WikiDocumentName);
Result:=BasicCodeTools.CompareText(p1.WikiDocumentName,p2.WikiDocumentName,true);
end;
function CompareDocumentNameWithPage(DocumentName, Page: Pointer): integer;
var
p: TW2FormatPage absolute Page;
begin
Result:=CompareStr(AnsiString(DocumentName),p.WikiDocumentName);
Result:=BasicCodeTools.CompareText(AnsiString(DocumentName),p.WikiDocumentName,true);
end;
function CompareDocumentNameWithPageIgnoreLang(DocumentName, Page: Pointer
): integer;
var
p: TW2FormatPage absolute Page;
DocName: String;
l1: Integer;
l2: Integer;
begin
DocName:=AnsiString(DocumentName);
l1:=GetWikiPageLanguageDelimiterPos(DocName)-1;
if l1<0 then l1:=length(DocName);
l2:=GetWikiPageLanguageDelimiterPos(p.WikiDocumentName)-1;
if l2<0 then l2:=length(p.WikiDocumentName);
Result:=BasicCodeTools.CompareText(PChar(DocName),l1,
PChar(p.WikiDocumentName),l2,true);
end;
end.

View File

@ -29,7 +29,7 @@ interface
uses
Classes, SysUtils, math, LazFileUtils, LazLogger, LazDbgLog, LazUTF8,
laz2_DOM, CodeToolsStructs, BasicCodeTools, KeywordFuncLists, MTProcs,
Wiki2HTMLConvert, Wiki2XHTMLConvert, WikiFormat, WikiParser, WikiStrConsts;
Wiki2HTMLConvert, Wiki2XHTMLConvert, WikiFormat, WikiParser;
type
TWikiHelp = class;
@ -242,8 +242,6 @@ type
// languages
function CollectAllLanguages(AsCaption: boolean): TStrings;
function LangCodeToCaption(ID: string): string;
function LangCaptionToCode(Caption: string): string;
// search
procedure Search(const Term: string; const Languages: string = '';
@ -1423,7 +1421,7 @@ begin
+'<body>'+LineEnding;
for i:=0 to Min(FoundPages.Count-1,MaxResults) do begin
Page:=TW2HelpPage(FoundPages[i]);
//debugln(['TWikiHelp.DoSearch ',Page.WikiDocumentName,' ',GetWikiPageLanguage(Page.WikiDocumentName),' ',WikiPageHasLanguage(Page.WikiDocumentName,Query.Languages)]);
//debugln(['TWikiHelp.DoSearch ',Page.WikiDocumentName,' ',Page.WikiLanguage,' ',WikiPageHasLanguage(Page.WikiDocumentName,Query.Languages)]);
Node:=Page.GetNodeHighestScore(Query);
s:='<div class="wikiSearchResultItem">'+FoundNodeToHTMLSnippet(Page,Node,Query)+'</div>'+LineEnding;
//debugln(['TWikiHelp.TestSearch Score=',Page.Score,' HTML="',s,'"']);
@ -1584,7 +1582,7 @@ function TWikiHelp.CollectAllLanguages(AsCaption: boolean): TStrings;
procedure Add(Code: string);
begin
if AsCaption then
Code:=LangCodeToCaption(Code);
Code:=WikiLangCodeToCaption(Code);
CollectAllLanguages.Add(Code);
end;
@ -1608,80 +1606,6 @@ begin
end;
end;
function TWikiHelp.LangCodeToCaption(ID: string): string;
begin
if ID='' then Result:=wrsLanguageEnglishOriginal
else if ID='*' then Result:=wrsAll
else if CompareText(ID,'af')=0 then Result:=wrsLanguageAfrikaans
else if CompareText(ID,'ar')=0 then Result:=wrsLanguageArabic
else if CompareText(ID,'ca')=0 then Result:=wrsLanguageCatalan
else if CompareText(ID,'cs')=0 then Result:=wrsLanguageCzech
else if CompareText(ID,'de')=0 then Result:=wrsLanguageGerman
else if CompareText(ID,'en')=0 then Result:=wrsLanguageEnglish
else if CompareText(ID,'es')=0 then Result:=wrsLanguageSpanish
else if CompareText(ID,'fa')=0 then Result:=wrsLanguagePersian
else if CompareText(ID,'fi')=0 then Result:=wrsLanguageFinnish
else if CompareText(ID,'fr')=0 then Result:=wrsLanguageFrench
else if CompareText(ID,'he')=0 then Result:=wrsLanguageHebrew
else if CompareText(ID,'hu')=0 then Result:=wrsLanguageHungarian
else if CompareText(ID,'id')=0 then Result:=wrsLanguageIndonesian
else if CompareText(ID,'it')=0 then Result:=wrsLanguageItalian
else if CompareText(ID,'ja')=0 then Result:=wrsLanguageJapanese
else if CompareText(ID,'ko')=0 then Result:=wrsLanguageKorean
else if CompareText(ID,'lt')=0 then Result:=wrsLanguageLithuanian
else if CompareText(ID,'mk')=0 then Result:=wrsLanguageMacedonien
else if CompareText(ID,'nl')=0 then Result:=wrsLanguageDutch
else if CompareText(ID,'pl')=0 then Result:=wrsLanguagePolish
else if CompareText(ID,'pt')=0 then Result:=wrsLanguagePortuguese
else if CompareText(ID,'pt_BR')=0 then Result:=wrsLanguagePortugueseBr
else if CompareText(ID,'ro')=0 then Result:=wrsLanguageRomanian
else if CompareText(ID,'ru')=0 then Result:=wrsLanguageRussian
else if CompareText(ID,'sk')=0 then Result:=wrsLanguageSlovak
else if CompareText(ID,'sq')=0 then Result:=wrsLanguageAlbania
else if CompareText(ID,'tr')=0 then Result:=wrsLanguageTurkish
else if CompareText(ID,'uk')=0 then Result:=wrsLanguageUkrainian
else if CompareText(ID,'zh_CN')=0 then Result:=wrsLanguageChinese
else if CompareText(ID,'zh_TW')=0 then Result:=wrsLanguageChineseTaiwan
else Result:=ID;
end;
function TWikiHelp.LangCaptionToCode(Caption: string): string;
begin
if Caption=wrsLanguageEnglishOriginal then Result:=''
else if Caption=wrsAll then Result:='*'
else if Caption=wrsLanguageAfrikaans then Result:='af'
else if Caption=wrsLanguageAlbania then Result:='sq'
else if Caption=wrsLanguageArabic then Result:='ar'
else if Caption=wrsLanguageCatalan then Result:='ca'
else if Caption=wrsLanguageChinese then Result:='zh_CN'
else if Caption=wrsLanguageChineseTaiwan then Result:='zh_TW'
else if Caption=wrsLanguageCzech then Result:='cs'
else if Caption=wrsLanguageDutch then Result:='nl'
else if Caption=wrsLanguageEnglish then Result:='en'
else if Caption=wrsLanguageFinnish then Result:='fi'
else if Caption=wrsLanguageFrench then Result:='fr'
else if Caption=wrsLanguageGerman then Result:='de'
else if Caption=wrsLanguageHebrew then Result:='he'
else if Caption=wrsLanguageHungarian then Result:='hu'
else if Caption=wrsLanguageIndonesian then Result:='id'
else if Caption=wrsLanguageItalian then Result:='it'
else if Caption=wrsLanguageJapanese then Result:='ja'
else if Caption=wrsLanguageKorean then Result:='ko'
else if Caption=wrsLanguageLithuanian then Result:='lt'
else if Caption=wrsLanguageMacedonien then Result:='mk'
else if Caption=wrsLanguagePersian then Result:='fa'
else if Caption=wrsLanguagePolish then Result:='pl'
else if Caption=wrsLanguagePortuguese then Result:='pt'
else if Caption=wrsLanguagePortugueseBr then Result:='pt_BR'
else if Caption=wrsLanguageRomanian then Result:='ro'
else if Caption=wrsLanguageRussian then Result:='ru'
else if Caption=wrsLanguageSlovak then Result:='sk'
else if Caption=wrsLanguageSpanish then Result:='es'
else if Caption=wrsLanguageTurkish then Result:='tk'
else if Caption=wrsLanguageUkrainian then Result:='uk'
else Result:=Caption;
end;
function TWikiHelp.GetProgressCaption: string;
begin
EnterCritSect;

View File

@ -265,7 +265,7 @@ begin
// search panel
SearchLabel.Caption:='Search:';
SearchEdit.Text:='Documentation';
SearchEdit.Text:='translations';
SearchEdit.Hint:='Type one or more words separated by space, use " for phrases with spaces';
HideSearchButton.Caption:='Hide';
OptionsButton.Caption:='Options';
@ -642,7 +642,7 @@ begin
NewHTML:=TIpHtml.Create; // Beware: Will be freed automatically by IpHtmlPanel
Target.SetHtml(NewHTML);
NewHTML.LoadFromStream(aStream);
// ToDo: fix TIpHtmlNodeA.MakeVisible
// ToDo: fix TIpHtmlNodeA.MakeVisible, the areas are all 0,0,0,0 at this time
if Anchor<>'' then
Target.MakeAnchorVisible(Anchor+'/'); // ipHTML store anchor names with / at end
except

View File

@ -26,7 +26,7 @@ interface
uses
Classes, SysUtils, FileUtil, LazLogger, BasicCodeTools,
CodeToolsStructs, WikiHelpManager, WikiFormat, WikiStrConsts, Forms, Controls,
CodeToolsStructs, WikiHelpManager, WikiStrConsts, WikiFormat, Forms, Controls,
Graphics, Dialogs, ExtCtrls, StdCtrls, ComCtrls, Grids;
type
@ -185,7 +185,7 @@ begin
end else begin
// a specific language
Lang:=SubString(StartPos,p-StartPos);
if WikiHelp.LangCodeToCaption(Lang)<>Lang then
if WikiLangCodeToCaption(Lang)<>Lang then
FLanguages[Lang]:='1';
end;
end;
@ -238,13 +238,13 @@ var
begin
p:=Pos(' (',NodeText);
if p>0 then Delete(NodeText,p,length(NodeText));
Result:=WikiHelp.LangCaptionToCode(NodeText);
Result:=WikiLangCaptionToCode(NodeText);
end;
function TWikiSearchOptsWnd.LangToNodeText(LangID: string; Count: integer
): string;
begin
Result:=WikiHelp.LangCodeToCaption(LangID);
Result:=WikiLangCodeToCaption(LangID);
if Count<0 then
Result+=' (?)'
else
@ -266,7 +266,7 @@ begin
LangToCount:=TStringToPointerTree.Create(true);
try
for i:=0 to WikiHelp.Converter.Count-1 do begin
Lang:=GetWikiPageLanguage(WikiHelp.Converter[i].WikiDocumentName);
Lang:=WikiHelp.Converter[i].WikiLanguage;
LangToCount[Lang]:=LangToCount[Lang]+1;
end;
for S2PItem in LangToCount do