德尔福:DKLang:有人可以解决同一类的两种形式的问题

时间:2013-04-25 20:33:11

标签: delphi delphi-7

DKLang是本地化包。当没有翻译同一类的2种或更多种形式时,我有一个旧问题(其中只有1种翻译,其他形式是英文)。我是指动态创建的表单。

有人能解决这个问题吗? DKlang的作者一年没有回复。

EDIT 如何查看实际操作:演示项目(6KB RAR,仅限源代码)download here。 编译完成后,按主菜单 - 您将看到3个样本表单实例,第1个是本地化的,其他2个不是。需要非Unicode Delphi + TNT Unicode控件+ DKLang 3.x

Demo project

2 个答案:

答案 0 :(得分:0)

似乎我找到了它。我的修复是TDKLang_CompTranslations.FindComponentName中的两个新行 名称为“Form2_1”,“Form2_2”

function TDKLang_CompTranslations.FindComponentName(sComponentName: String): TDKLang_CompTranslation;
  var idx: Integer;
  begin
    idx := Pos('_', sComponentName); //added
    if idx>0 then System.Delete(sComponentName, idx, MaxInt); //added

    idx := IndexOfComponentName(sComponentName);
    if idx<0 then Result := nil else Result := GetItems(idx);
  end;

答案 1 :(得分:-1)

现在这是一个非常古老的问题,但是对于记录,我想给出正确的答案 DKLanguageController具有 SectionName 属性 在播放将动态实例化的表单或框架时,为SectionName提供一个值。对于所有者表单/框架的所有实例,此值将是通用的 所有翻译都将存储在以 SectionName 值命名的部分下,而不是表单/框架的名称。 这在文档中有明确说明,无需弄乱源代码。