Otherwise printf is undeclared. These files worked with earlier versions of gcc because either cstdio or stdio.h was being included by some other header file. But this was not guaranteed behavior, so with GCC 4.4 there are errors. The fix is backwards compatible with earlier versions of GCC. This change includes either <cstdio> or <stdio.h> whichever looks more appropriate given the other headers included by the given source file. Note, I'm using "GCC" to mean Gnu Compile Collection, as this problem is specific to C++ source files. (Presumably a C++-specific header file changed to no longer include cstdio.)
221 lines
6.3 KiB
C++
221 lines
6.3 KiB
C++
#include "XLIFFFile.h"
|
|
#include "ValuesFile.h"
|
|
#include "localize.h"
|
|
#include <stdio.h>
|
|
|
|
int pseudolocalize_xliff(XLIFFFile* xliff, bool expand);
|
|
|
|
static int
|
|
test_filename(const string& file, const string& locale, const string& expected)
|
|
{
|
|
string result = translated_file_name(file, locale);
|
|
if (result != expected) {
|
|
fprintf(stderr, "translated_file_name test failed\n");
|
|
fprintf(stderr, " locale='%s'\n", locale.c_str());
|
|
fprintf(stderr, " expected='%s'\n", expected.c_str());
|
|
fprintf(stderr, " result='%s'\n", result.c_str());
|
|
return 1;
|
|
} else {
|
|
if (false) {
|
|
fprintf(stderr, "translated_file_name test passed\n");
|
|
fprintf(stderr, " locale='%s'\n", locale.c_str());
|
|
fprintf(stderr, " expected='%s'\n", expected.c_str());
|
|
fprintf(stderr, " result='%s'\n", result.c_str());
|
|
}
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
static int
|
|
translated_file_name_test()
|
|
{
|
|
bool all = true;
|
|
int err = 0;
|
|
|
|
if (all) err |= test_filename("//device/samples/NotePad/res/values/strings.xml", "zz_ZZ",
|
|
"//device/samples/NotePad/res/values-zz-rZZ/strings.xml");
|
|
|
|
if (all) err |= test_filename("//device/samples/NotePad/res/values/strings.xml", "zz",
|
|
"//device/samples/NotePad/res/values-zz/strings.xml");
|
|
|
|
if (all) err |= test_filename("//device/samples/NotePad/res/values/strings.xml", "",
|
|
"//device/samples/NotePad/res/values/strings.xml");
|
|
|
|
return err;
|
|
}
|
|
|
|
bool
|
|
return_false(const string&, const TransUnit& unit, void* cookie)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
static int
|
|
delete_trans_units()
|
|
{
|
|
XLIFFFile* xliff = XLIFFFile::Parse("testdata/strip_xliff.xliff");
|
|
if (xliff == NULL) {
|
|
printf("couldn't read file\n");
|
|
return 1;
|
|
}
|
|
if (false) {
|
|
printf("XLIFF was [[%s]]\n", xliff->ToString().c_str());
|
|
}
|
|
|
|
xliff->Filter(return_false, NULL);
|
|
|
|
if (false) {
|
|
printf("XLIFF is [[%s]]\n", xliff->ToString().c_str());
|
|
|
|
set<StringResource> const& strings = xliff->GetStringResources();
|
|
printf("strings.size=%zd\n", strings.size());
|
|
for (set<StringResource>::iterator it=strings.begin(); it!=strings.end(); it++) {
|
|
const StringResource& str = *it;
|
|
printf("STRING!!! id=%s value='%s' pos=%s file=%s version=%d(%s)\n", str.id.c_str(),
|
|
str.value->ContentsToString(ANDROID_NAMESPACES).c_str(),
|
|
str.pos.ToString().c_str(), str.file.c_str(), str.version,
|
|
str.versionString.c_str());
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
filter_trans_units()
|
|
{
|
|
XLIFFFile* xliff = XLIFFFile::Parse("testdata/strip_xliff.xliff");
|
|
if (xliff == NULL) {
|
|
printf("couldn't read file\n");
|
|
return 1;
|
|
}
|
|
|
|
if (false) {
|
|
printf("XLIFF was [[%s]]\n", xliff->ToString().c_str());
|
|
}
|
|
|
|
Settings setting;
|
|
xliff->Filter(keep_this_trans_unit, &setting);
|
|
|
|
if (false) {
|
|
printf("XLIFF is [[%s]]\n", xliff->ToString().c_str());
|
|
|
|
set<StringResource> const& strings = xliff->GetStringResources();
|
|
printf("strings.size=%zd\n", strings.size());
|
|
for (set<StringResource>::iterator it=strings.begin(); it!=strings.end(); it++) {
|
|
const StringResource& str = *it;
|
|
printf("STRING!!! id=%s value='%s' pos=%s file=%s version=%d(%s)\n", str.id.c_str(),
|
|
str.value->ContentsToString(ANDROID_NAMESPACES).c_str(),
|
|
str.pos.ToString().c_str(), str.file.c_str(), str.version,
|
|
str.versionString.c_str());
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
settings_test()
|
|
{
|
|
int err;
|
|
map<string,Settings> settings;
|
|
map<string,Settings>::iterator it;
|
|
|
|
err = read_settings("testdata/config.xml", &settings, "//asdf");
|
|
if (err != 0) {
|
|
return err;
|
|
}
|
|
|
|
if (false) {
|
|
for (it=settings.begin(); it!=settings.end(); it++) {
|
|
const Settings& setting = it->second;
|
|
printf("CONFIG:\n");
|
|
printf(" id='%s'\n", setting.id.c_str());
|
|
printf(" oldVersion='%s'\n", setting.oldVersion.c_str());
|
|
printf(" currentVersion='%s'\n", setting.currentVersion.c_str());
|
|
int i=0;
|
|
for (vector<string>::const_iterator app=setting.apps.begin();
|
|
app!=setting.apps.end(); app++) {
|
|
printf(" apps[%02d]='%s'\n", i, app->c_str());
|
|
i++;
|
|
}
|
|
i=0;
|
|
for (vector<Reject>::const_iterator reject=setting.reject.begin();
|
|
reject!=setting.reject.end(); reject++) {
|
|
i++;
|
|
printf(" reject[%02d]=('%s','%s','%s')\n", i, reject->file.c_str(),
|
|
reject->name.c_str(), reject->comment.c_str());
|
|
}
|
|
}
|
|
}
|
|
|
|
for (it=settings.begin(); it!=settings.end(); it++) {
|
|
const Settings& setting = it->second;
|
|
if (it->first != setting.id) {
|
|
fprintf(stderr, "it->first='%s' setting.id='%s'\n", it->first.c_str(),
|
|
setting.id.c_str());
|
|
err |= 1;
|
|
}
|
|
}
|
|
|
|
|
|
return err;
|
|
}
|
|
|
|
static int
|
|
test_one_pseudo(bool big, const char* expected)
|
|
{
|
|
XLIFFFile* xliff = XLIFFFile::Parse("testdata/pseudo.xliff");
|
|
if (xliff == NULL) {
|
|
printf("couldn't read file\n");
|
|
return 1;
|
|
}
|
|
if (false) {
|
|
printf("XLIFF was [[%s]]\n", xliff->ToString().c_str());
|
|
}
|
|
|
|
pseudolocalize_xliff(xliff, big);
|
|
string newString = xliff->ToString();
|
|
delete xliff;
|
|
|
|
if (false) {
|
|
printf("XLIFF is [[%s]]\n", newString.c_str());
|
|
}
|
|
|
|
if (false && newString != expected) {
|
|
fprintf(stderr, "xliff didn't translate as expected\n");
|
|
fprintf(stderr, "newString=[[%s]]\n", newString.c_str());
|
|
fprintf(stderr, "expected=[[%s]]\n", expected);
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
pseudolocalize_test()
|
|
{
|
|
int err = 0;
|
|
|
|
err |= test_one_pseudo(false, "");
|
|
//err |= test_one_pseudo(true, "");
|
|
|
|
return err;
|
|
}
|
|
|
|
int
|
|
localize_test()
|
|
{
|
|
bool all = true;
|
|
int err = 0;
|
|
|
|
if (all) err |= translated_file_name_test();
|
|
if (all) err |= delete_trans_units();
|
|
if (all) err |= filter_trans_units();
|
|
if (all) err |= settings_test();
|
|
if (all) err |= pseudolocalize_test();
|
|
|
|
return err;
|
|
}
|
|
|