-1

DKLang是本地化包。当同一类的两种或多种形式没有被翻译时,我遇到了一个老问题(只有其中一种被翻译,其他的是英文)。我的意思是动态创建的表单。

有人可以解决这个问题吗?DKlang 的作者一年没有回应。

编辑如何查看实际操作:演示项目(6KB RAR,仅限源代码)在此处下载。编译后,按主按钮-您将看到 3 个示例表单实例,第一个已本地化,其他 2 个未本地化。需要非 Unicode Delphi + TNT Unicode Controls + DKLang 3.x

演示项目

4

2 回答 2

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;
于 2013-04-27T20:58:39.947 回答
-1

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

于 2015-01-13T10:37:07.647 回答