将.po文件转换为ICU4C .txt文件

时间:2017-03-06 16:37:07

标签: sed localization gettext data-conversion icu

我尝试使用sed脚本从gettext .po文件创建ICU4C file,如下所示:

/^#/ d                            /* delete comments */
:a;/"$/{N;s/"\n"//;ba}            /* merge quoted lines in loop */
/^msgid /s/msgid (.*)/\1/         /* convert msgids */
s/msgstr "(.*)"/\{ "\1" }/        /* convert msgstrs */

并且它已经很好地工作(忽略复数形式),但由于某种原因它不会转换最后一个msgid / msgstr对,除非我没有合并两次引号。但是其他东西的语法变得错误。有任何想法吗?不必使用sed

那些ICU文件是genrb接受的唯一文件,我想在PHP中使用ResourceBundle。

1 个答案:

答案 0 :(得分:0)

我通过shell脚本完成了我的目标。这是一个粗略的想法:

import UIKit
import Charts

class StatistiqueSafetyCheckViewController: UIViewController {

    @IBOutlet weak var lineChartView: LineChartView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let ys1 = Array(1..<10).map { x in return sin(Double(x) / 2.0 / 3.141 * 1.5) }
        let ys2 = Array(1..<10).map { x in return cos(Double(x) / 2.0 / 3.141) }

        let yse1 = ys1.enumerated().map { x, y in return LineChartDataEntry(x: Double(x), y: y) }
        let yse2 = ys2.enumerated().map { x, y in return LineChartDataEntry(x: Double(x), y: y) }

        let data = LineChartData()
        let ds1 = LineChartDataSet(values: yse1, label: "Hello")
        ds1.colors = [NSUIColor.red]
        data.addDataSet(ds1)

        let ds2 = LineChartDataSet(values: yse2, label: "World")
        ds2.colors = [NSUIColor.blue]
        data.addDataSet(ds2)

        self.lineChartView.data = data
        self.lineChartView.gridBackgroundColor = NSUIColor.white
        self.lineChartView.chartDescription?.text = "Linechart Demo"
    }

    override open func viewWillAppear(_ animated: Bool) {
        self.lineChartView.animate(xAxisDuration: 1.0, yAxisDuration: 1.0)
    }
}

可能有一种更好的方式,但它可以胜任。