使用 1:1 替换文件替换 xml 文档中的字符串

问题描述 投票:0回答:1

对于要分发的 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 解决方案。感谢您的帮助。

xml substitution
1个回答
0
投票

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>
© www.soinside.com 2019 - 2024. All rights reserved.