0

使用多语言应用工具包时,我们的resxxlf文件包含许多我们不想翻译的垃圾(例如控件的大小和位置)。

带有 resx 文件的 VisualStudio .NET WinForms 示例

反正有没有自动排除所有额外的信息?

如果不是,是否是使用多语言编辑器手动浏览 XLIFF 文件并将其更改translatable为 False 的唯一方法?

当资源文件包含图像时,问题会更糟......

在此处输入图像描述

4

2 回答 2

0

在这里问了几天后,我尝试在 Multilingual App Toolkit 的官方支持页面上问同样的问题,但我也没有得到回复。

因此,作为该问题的解决方法,我编写了一个 python 脚本来设置除.TextXLIFF 文件之外的所有属性,以便将它们标记为translate="No". 多语言编辑器没有将“可翻译”设置为批量操作的选项,手动执行此操作将花费很长时间。

#!/usr/bin/env python
from lxml import etree
import os


NEW_LINE = '\r\n'


def set_translatable(filepath):
    """
    Each string in the XLF file is set to translatable False unless
    it is the `.Text` attribute that we actually want translated.

    """
    doc = etree.parse(filepath)

    for d in doc.iter():
        if 'trans-unit' in d.tag:
            translate = False
            for k, v in d.items():
                if k == 'id':
                    if v.endswith('.Text'):
                        translate = True
            translate = 'yes' if translate else 'no'
            d.set('translate', translate)
    with open(filepath, 'w') as out_file:
        doc.write(out_file)


def main():
    cwd = os.getcwd()

    for subdir, dirs, files in os.walk(cwd):
        for file in files:
            if filepath.endswith('.xlf'):
                set_translatable(filepath)          


if __name__ == '__main__':
    main()

在 Visual Studio 中,我还必须手动打开每个表单并将Localizable属性设置为,True以便将.Text值保存在.resx多语言应用程序工具包可以处理它们的对应位置。

于 2019-02-26T11:29:50.310 回答
0

就我而言,我想在每个文件的基础上忽略,所以这对我很有帮助:https ://multilingualapptoolkit.uservoice.com/forums/231158-general/suggestions/13627704-add-ignore-exclude-filter-for -resx 文件

我基本上加了

<SuppressAutomaticLocalization>true</SuppressAutomaticLocalization>

在 .csproj 文件的 EmbeddedResource 标记中,导致:

<ItemGroup>
  <EmbeddedResource Update="Properties\Authorization\Components_Actions.resx">
    <Generator>ResXFileCodeGenerator</Generator>
    <LastGenOutput>Components_Actions.Designer.cs</LastGenOutput>
    <SuppressAutomaticLocalization>true</SuppressAutomaticLocalization>
  </EmbeddedResource>
...

更多信息:如果 .resx 文件未在 .csproj 文件中列出,请确保在 .resx 文件编辑器中设置 AccessModifier。如果未进行任何选择,则该文件不会出现在 .csproj 中

于 2021-10-14T12:16:07.087 回答