对于要分发的 Linux 操作系统,我有一个 Openbox menu.xml 文件,其中包含大约 30 个单词,需要翻译这些单词才能本地化该菜单。我整理了一个包含两栏的 .csv 文档:第一栏是英文原文(其中一些包含空格),第二栏是翻译。我将针对 12 种语言重复此操作。
这是一个示例菜单条目,其中“文件管理器”是翻译目标:
<item label="File manager">
<action name="Execute"><execute>thunar</execute></action>
</item>
我需要一种方法来逐字符串搜索 menu.xml 文档,用翻译替换所有出现的给定字符串。顺便说一句:诸如执行、操作、项目等功能术语不会出现在 csv 列表中。
在早期的项目中,我儿子有一个 R 脚本,它可以使用平面文件(Fluxbox 菜单),但在这种情况下不会进行替换,所以我希望找到一个我熟悉的 Bash 解决方案。感谢您的帮助。
与
xmlstarlet
:
xmlstarlet ed -u '//action[@name="Execute"]/@name' -v "EDITED" file.xml
<?xml version="1.0"?>
<root>
<item label="File manager">
<action name="EDITED">
<execute>thunar</execute>
</action>
</item>
</root>