0

我做了一个 symfony2 网站的内部化,我的代码可以生成这样的单元翻译:

 <trans-unit id="861b143b00e2f350dfe22876922294066b160351" resname="utilisez.ff.chrome">
    <source>utilisez.ff.chrome</source>
    <target state="new">utilisez.ff.chrome</target>
    <jms:reference-file line="85">Resources/views/base.html.twig</jms:reference-file>
    <jms:reference-file line="62">Resources/views/base_jq.html.twig</jms:reference-file>
  </trans-unit>

我有一个包含数据的 csv 文件,source;target (utilisez.ff.chrome; utilisez de préférence Firefox ou Chrome)我想制作一个 bash 文件,将目标值替换为文件中的值。如果你能帮助我,那就太好了:) 我对 bash 命令没什么技能。提前致谢。

4

1 回答 1

1

使用 &

使用@id

xmlstarlet edit -L \
-u "//trans-unit[@id="861b143b00e2f350dfe22876922294066b160351"]/target/text()"\
-v 'utilisez de préférence Firefox ou Chrome' file.xml

或使用 csv 的文本:

src="$(cut -d';' -f2 file.csv | tr -d $'\n')"
rep="$(cut -d';' -f3 file.csv | tr -d $'\n')"
xmlstarlet edit -L -u "//target/text()[@text()='$src'" -v "$rep" file.xml

已编辑文件的输出:

<?xml version="1.0"?>
<trans-unit id="861b143b00e2f350dfe22876922294066b160351" resname="utilisez.ff.chrome">
  <source>utilisez.ff.chrome</source>
  <target state="new">utilisez de pr&#xE9;f&#xE9;rence Firefox ou Chrome</target>
  <jms:reference-file line="85">Resources/views/base.html.twig</jms:reference-file>
  <jms:reference-file line="62">Resources/views/base_jq.html.twig</jms:reference-file>
</trans-unit>
于 2014-12-24T16:57:10.230 回答