- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我只是偶尔写代码,这是我能放在一起的最好的,我希望有人能指出我正确的方向。(我一直在寻找其他答案,但他们只让我走到这一步)
import xml.etree.ElementTree as ET
tree = ET.parse('FMTranslations.resx') # localised file - contains sub set of strings found in Master
transsubset = tree.getroot()
import xml.etree.ElementTree as ET2
tree2 = ET2.parse('FMTranslations.fr-FR.resx') # Master file for French strings.
master = tree2.getroot()
count=0
for child in transsubset:
#print (child.tag, child.attrib)
#print (child.tag)
count += 1
match = 0
x = 5 # 5th element is the 1st data element we are interested in
print('translations : \n')
while x < count:
print(transsubset[x].attrib,'\n', transsubset[x][0].text)
print('\n\n\n\n')
for child in master: #
if child.attrib == transsubset[x].attrib:
print(child.attrib)
print(transsubset[x].attrib)
print('\n\n')
# copy transsubset[x][0].text value into child something...
match += 1
print(' -------------------- \n')
x += 1
基本上我想用另一个 resx 文件的内容更新一个 resx 文件;要更改的部分可以在需要维护的文件和结构中的任何位置。
更详细...我们使用 RESX 文件来保存我们的本地化字符串——每种语言 1 个 RESX。由于这些文件的大小,当我们获取要翻译的字符串时,我们每次只发送新的或更改的字符串,即增量,而不是整个文件。
例如在我们的 RESX 中间我们有
<data name="S_LANGUAGE_ENF_IE" xml:space="preserve">
<value>English</value>
<comment>Language English (Ireland)</comment>
</data>
<data name="S_LANGUAGE_GER" xml:space="preserve">
<value>German</value>
<comment>Language German</comment>
</data>
<data name="S_LANGUAGE_FRA" xml:space="preserve">
<value>French</value>
<comment>language French</comment>
</data>
<data name="S_LANGUAGE_NED" xml:space="preserve">
<value>Dutch</value>
<comment>Language Dutch</comment>
</data>
<data name="S_LANGUAGE_SPA" xml:space="preserve">
<value>Spanish</value>
<comment>Language Spanish</comment>
</data>
例如,如果我发送了一个仅包含 RESX 的本地化
<data name="S_LANGUAGE_FRA" xml:space="preserve">
<value>French</value>
<comment>language French</comment>
</data>
<data name="S_LANGUAGE_NED" xml:space="preserve">
<value>Dutch</value>
<comment>Language Dutch</comment>
</data>
当这些翻译回来时,我必须(添加到法语文件)。
<data name="S_LANGUAGE_FRA" xml:space="preserve">
<value>Français</value>
<comment>language French</comment>
</data>
<data name="S_LANGUAGE_NED" xml:space="preserve">
<value>Néerlandais</value>
<comment>Language Dutch</comment>
</data>
我想要一个 python 脚本
a) 读取翻译后的 RESX 文件或对其进行解析
b) 在原始的、完整的 RESX 中找到匹配的元素属性,例如<data name="S_LANGUAGE_FRA" xml:space="preserve">
c) 用翻译后的 VALUE 替换原来的 VALUE <value>French</value>
被 <value> Français</value>
取代
注意:我正在发送包含 header 和 xsd 信息等的有效 RESX 文件——翻译公司可以本地化 RESX,而且更容易做到这一点。
我正在尝试编写一个 Python 脚本来执行此操作——根据属性在 RESX 中将英文字符串替换为翻译后的字符串。我卡住的地方是 # copy transsubset[x][0].text value into child something...
我不知道在这里放什么&我正在尝试不同的东西但没有成功也许我的理解方式不对,两者不能真正协同工作,但我只是偶尔编写代码,所以这对其他人来说可能是显而易见的。
感谢您提供的任何建议谢谢
最佳答案
我会使用 BeautifulSoup达到你想要的结果。它不会根据架构验证文件(如果需要,您可以将其作为一个单独的步骤来执行),但写起来很干净:
# -*- coding: utf-8 -*-
SOURCE_MARKUP = """
<root>
<data name="S_LANGUAGE_ENF_IE" xml:space="preserve">
<value>English</value>
<comment>Language English (Ireland)</comment>
</data>
<data name="S_LANGUAGE_GER" xml:space="preserve">
<value>German</value>
<comment>Language German</comment>
</data>
<data name="S_LANGUAGE_FRA" xml:space="preserve">
<value>French</value>
<comment>language French</comment>
</data>
<data name="S_LANGUAGE_NED" xml:space="preserve">
<value>Dutch</value>
<comment>Language Dutch</comment>
</data>
<data name="S_LANGUAGE_SPA" xml:space="preserve">
<value>Spanish</value>
<comment>Language Spanish</comment>
</data>
</root>
"""
DELTA_MARKUP = """
<root>
<data name="S_LANGUAGE_FRA" xml:space="preserve">
<value>Français</value>
<comment>language French</comment>
</data>
<data name="S_LANGUAGE_NED" xml:space="preserve">
<value>Néerlandais</value>
<comment>Language Dutch</comment>
</data>
</root>
"""
from bs4 import BeautifulSoup
source = BeautifulSoup(SOURCE_MARKUP)
delta = BeautifulSoup(DELTA_MARKUP)
delta_data = delta.find_all('data', attrs={'name': True})
for change in delta_data:
# find in source
origin = source.find('data', attrs={'name': change['name']})
# replace tag
origin.replace_with(change)
print source.prettify()
关于python - 在 Python 中,尝试使用第二个 RESX 的内容更新 RESX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30194802/
我正在尝试确定是否可以将串联字符串添加到我的本地 .resx 文件之一。这个例子应该阐明: 假设我有一个简单的 ASP.NET 网页,它包含 (1) 一个标签,其文本是一个重要的关键字 (2) 一个具
我只是偶尔写代码,这是我能放在一起的最好的,我希望有人能指出我正确的方向。(我一直在寻找其他答案,但他们只让我走到这一步) import xml.etree.ElementTree as ET tre
我正在使用 .NET 2.0 Framework 中的一个 Web 项目,但是当我在 4.0 Framework 中打开该项目时,它给出了无效的 resx 文件错误。我的项目的工作方式是,我有一个空的
在.Net Core official documentation for localization ,提到了如何使 DataAnnotations 由 IStringLocalizer 从一个特殊的
所以我有一个 C# 应用程序。它有一些链接到它的 Assets ,并在编译时被嵌入。应用程序在 Windows 上完美编译和运行。当测试与单声道的兼容性时,一切都是正确的。如果我尝试编译给出一个错误
我被赋予了国际化大型客户端-服务器应用程序的任务。职责是我让应用程序“世界就绪”,然后将编译的应用程序和资源传递给另一个国家的同事进行翻译并发布给他们的客户。会有几个国家,因此会有几个单独的翻译。 这
我想从WPF窗口访问我的Strings.resx文件,但它给了我以下错误: "Strings" does not exist in the namespace "clr-namespa
我们将处理我们的 .resx 文件以进行翻译。由于这些文件除了要翻译的字符串之外还有很多 xml 数据,所以我一直在寻找一种方法来计算已翻译的单词/字符串。我们有 winform 创建的 resx 文
我在单独的 .resx 文件中有 3 组 9 个图像,我正在尝试弄清楚如何将一组循环到 9 个静态图片框中。 Loop through all the resources in a .resx fil
我在一台相当强大的机器上使用 Visual Studio 2010 工作。我有一个解决方案,下面有几个不同的项目 Solution Activations DatabaseManager
我们正在使用一些大型的 asp.net 网络工具包制作网络应用程序。一开始我们创建了很多基类,例如命令和服务器控件,以便于我们的工作。 现在,当我们使用它构建我们的应用程序时,我们决定构建另一个。为了
为什么我不想使用 Resx 文件: 我正在寻找 resx 文件的替代方案来为我的项目提供多语言支持,原因如下: 我不喜欢在编写消息时指定“messageId”,这需要更多的努力,而且对流程来说很烦人,
我的表单有问题,它会生成错误。如果我删除它们,它工作正常,但问题变得有点错误。 this.Icon = ((System.Drawing.Icon)(resources.GetObject("$thi
假设我们有一个 Windows 窗体 Form1,我们为其设置了一个图标。 Visual Studio 会将图标存储在 Form1.resx ($this.Icon) 中。 现在我们决定将应用程序本地
大家好,我是 C# 和本地化的新手,我可以使用它,但我想知道是否有任何预制语言 (resx) 文件可供下载,还是我应该自己从头开始创建它们? 谢谢 巴特 最佳答案 有两种方法可以理解您的问题。 如果是
我有一个生成 DbContext 和迁移配置的 T4 模板。在运行时,我使用该模板创建一个程序集,然后使用该程序集生成一个迁移。但是,当我想更新数据库时,仍然以编程方式进行。但是,我收到一个错误: C
我有一个程序集,其中包含一个 Messages.resx,其中包含 GUI 消息字符串,例如是、否、确定、取消、打开等。我的项目引用了这个程序集。我该如何使用它们? 最佳答案 在资源编辑器中,只需将资
我正在考虑为不同的客户自定义应用程序中的各种文本。 .resx 资源似乎是执行此操作的明智方法。然而,我遇到的所有关于 resx 的文献似乎都是关于语言差异的本地化(如英语、法语、西类牙语等),所以只
我正在处理一个旧项目,正在更新它。该程序的一部分有一个工具条,上面有许多按钮,每个按钮都有一个图像。我发现图像存储在 resx 中的 Base64 编码图像流中,并按如下方式访问: System.Co
我的 .resx 文件出现奇怪的错误: “无效的 Resx 文件。ResX 输入无效。找不到 ResX 读取器和写入器类型名称的有效“resheader”标记。C:\Documents and Set
我是一名优秀的程序员,十分优秀!