99 lines
2.9 KiB
C++
99 lines
2.9 KiB
C++
#ifndef XLIFF_FILE_H
|
|
#define XLIFF_FILE_H
|
|
|
|
#include "Values.h"
|
|
|
|
#include "Configuration.h"
|
|
|
|
#include <set>
|
|
|
|
using namespace std;
|
|
|
|
extern const XMLNamespaceMap XLIFF_NAMESPACES;
|
|
|
|
extern const char*const XLIFF_XMLNS;
|
|
|
|
struct Stats
|
|
{
|
|
string config;
|
|
size_t files;
|
|
size_t toBeTranslated;
|
|
size_t noComments;
|
|
size_t totalStrings;
|
|
};
|
|
|
|
struct TransUnit {
|
|
string id;
|
|
StringResource source;
|
|
StringResource target;
|
|
StringResource altSource;
|
|
StringResource altTarget;
|
|
string rejectComment;
|
|
};
|
|
|
|
class XLIFFFile
|
|
{
|
|
public:
|
|
static XLIFFFile* Parse(const string& filename);
|
|
static XLIFFFile* Create(const Configuration& sourceConfig, const Configuration& targetConfig,
|
|
const string& currentVersion);
|
|
~XLIFFFile();
|
|
|
|
inline const Configuration& SourceConfig() const { return m_sourceConfig; }
|
|
inline const Configuration& TargetConfig() const { return m_targetConfig; }
|
|
|
|
inline const string& CurrentVersion() const { return m_currentVersion; }
|
|
inline const string& OldVersion() const { return m_oldVersion; }
|
|
|
|
set<string> Files() const;
|
|
|
|
void AddStringResource(const StringResource& res);
|
|
inline set<StringResource> const& GetStringResources() const { return m_strings; }
|
|
bool FindStringResource(const string& filename, int version, bool source);
|
|
|
|
void Filter(bool (*func)(const string&,const TransUnit&,void*), void* cookie);
|
|
void Map(void (*func)(const string&,TransUnit*,void*), void* cookie);
|
|
|
|
TransUnit* EditTransUnit(const string& file, const string& id);
|
|
|
|
// exports this file as a n XMLNode, you own this object
|
|
XMLNode* ToXMLNode() const;
|
|
|
|
// writes the ValuesFile out to a string in the canonical format (i.e. writes the contents of
|
|
// ToXMLNode()).
|
|
string ToString() const;
|
|
|
|
Stats GetStats(const string& config) const;
|
|
|
|
private:
|
|
struct File {
|
|
int Compare(const File& that) const;
|
|
|
|
inline bool operator<(const File& that) const { return Compare(that) < 0; }
|
|
inline bool operator<=(const File& that) const { return Compare(that) <= 0; }
|
|
inline bool operator==(const File& that) const { return Compare(that) == 0; }
|
|
inline bool operator!=(const File& that) const { return Compare(that) != 0; }
|
|
inline bool operator>=(const File& that) const { return Compare(that) >= 0; }
|
|
inline bool operator>(const File& that) const { return Compare(that) > 0; }
|
|
|
|
string filename;
|
|
vector<TransUnit> transUnits;
|
|
};
|
|
|
|
XLIFFFile();
|
|
StringResource* find_string_res(TransUnit& g, const StringResource& str);
|
|
|
|
Configuration m_sourceConfig;
|
|
Configuration m_targetConfig;
|
|
|
|
string m_currentVersion;
|
|
string m_oldVersion;
|
|
|
|
set<StringResource> m_strings;
|
|
vector<File> m_files;
|
|
};
|
|
|
|
int convert_html_to_xliff(const XMLNode* original, const string& name, XMLNode* addTo, int* phID);
|
|
|
|
#endif // XLIFF_FILE_H
|