だから、英語とフランス語の2つの言語ファイルがあります。形式は次のとおりです。
key=translation
英語の例は次のとおりです。
ui.title=My Title
フランス国民:
ui.title=Mon Titre
そのため、言語ファイルを読み取って違いを見つけるスクリプトが必要です。英語のファイルにキーがあるとします。
ui.title=Title
ui.close=Close
しかしフランス語のみ
ui.title=Mon Titre
スクリプトを実行した後にインクルードをfrench.changes
出力する必要がありますui.close=Close
。これにより、翻訳者にファイルを送信して翻訳できます。
再インポートすると、単にcatを実行してfrench.changes >> french; sort -o Language_fr_FR.properties
変更をマージできます。
また、行全体ではなくキーごとに言語ファイルをソートする方法も必要です。
調べてみましたが、diff
ちゃんと使う方法がわかりません。私はしばらくの間Linuxを使用してきましたが、まだ素晴らしいスクリプトについてはあまり知りませんでした。 :)
助けてくれてありがとう!
答え1
以下は、2つのファイルengとfrを取得し、キーでソートし、キーで「接続」してファイル1(eng)から欠落している項目のみを表示します。
join -t= -v1 <(sort -t= -k 1,1 eng) <(sort -t= -k 1,1 fr)
したがって、希望するキーの順序は次のようになります。
sort -t= -k 1,1 eng
答え2
あなたが使用できる:
grep -v -f <(sed -r 's/([^=]*).*$/\1/' fr.i18n.txt) en.i18n.txt
en.i18n.txtからfr.i18n.txtのすべてのキーをフィルタリングします。
例:
$ cat > en.i18n.txt
ui.title=Title
ui.close=Close
ui.edit=Edit
ui.accept=Accept
^D
$ cat > fr.i18n.txt
ui.title=Titre
ui.edit=Modifier
^D
$ grep -v -f <(sed -r 's/([^=]*).*$/\1/' fr.i18n.txt) en.i18n.txt
ui.close=Close
ui.accept=Accept
$ FINISHED="$(grep -v -f <(sed -r 's/([^=]*).*$/\1/' fr.i18n.txt) en.i18n.txt)"
$ echo "$FINISHED"
ui.close=Close
ui.accept=Accept
cut
@don_crisstiはまた、この場合、st1
フィールドに区切り文字 '='を使用してフィルタリストを簡単に作成できることを正しく指摘しました。f
d
grep -v -f <(cut -d= -f1 fr.i18n.txt) eng.i18n.txt