Revision control

Copy as Markdown

// Copyright (C) 2025 The Qt Company Ltd
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtCore>
QString qt_detectRTLLanguage()
{
//% "QT_LAYOUT_DIRECTION"
//@ QCoreApplication
return qtTrId("QCoreApplication-QT€LAYOUT€-634"); // == QLatin1String("RTL");
}
class Dialog2
{
Q_OBJECT
void func();
void func3();
int getCount() const { return 2; }
};
void Dialog2::func()
{
int n = getCount();
//% "%n files"
//@ Dialog2
qtTrId("Dialog2-fna-27205" , n);
//% "%n cars"
//@ Dialog2
qtTrId("Dialog2-fna-69328" , n);
//% "&Find %n cars"
//@ Dialog2
qtTrId("Dialog2-gFindaf-5548" , n);
//% "Search in %n items?"
//@ Dialog2
qtTrId("Dialog2-Searchainaf-79544" , n);
//% "%1. Search in %n items?"
//@ Dialog2
qtTrId("Dialog2-f1oa-85018" , n);
//% "Age: %1"
//@ Dialog2
qtTrId("Dialog2-Age{af1");
//% "There are %n house(s)"
//@ Dialog2
qtTrId("Dialog2-Thereaareaf-89651" , getCount());
//% "Plurals and function call"
//@ translate: There are %n house(s)
qtTrId("translate: There are %n house(s)-Pluralsaanda-51377" , getCount());
//% "%n house(s)"
//@ Plurals, QCoreApplication
qtTrId("Plurals, QCoreApplication-fna-61606" , n);
//% "%n car(s)"
//@ Plurals, QCoreApplication
qtTrId("Plurals, QCoreApplication-fna-26815" , 1);
//% "%n horse(s)"
//@ Plurals, QCoreApplication
qtTrId("Plurals, QCoreApplication-fna-56748" , getCount());
QTranslator trans;
//% "Simple"
//@ QTranslator
qtTrId("QTranslator-Simple");
//% "Simple"
//@ QTranslator
qtTrId("QTranslator-Simple");
//% "Simple with comment"
//@ QTranslator
qtTrId("QTranslator-Simpleawitha-70311");
//% "Plural without comment"
//@ QTranslator
qtTrId("QTranslator-Pluralawithouta-57919" , 1);
//% "Plural with comment"
//@ QTranslator
qtTrId("QTranslator-Pluralawitha-83843" , n);
//% "Plural with comment"
//@ QTranslator
qtTrId("QTranslator-Pluralawitha-32045" , getCount());
//% "Plural with comment and static cast"
//@ QTranslator
qtTrId("QTranslator-Pluralawitha-12749" , static_cast<long>(getCount()));
}
typedef struct S_
{
int a;
} S, *SPtr;
class ForwardDecl;
#define FT_DEFINE_SERVICE(name) \
typedef struct FT_Service_##name##Rec_ FT_Service_##name##Rec; \
typedef struct FT_Service_##name##Rec_ const *FT_Service_##name; \
struct FT_Service_##name##Rec_
void Dialog2::func3()
{
//% "func3"
//@ Dialog2
qtTrId("Dialog2-func3");
}
namespace Gui {
class BaseClass
{
};
} // namespace Gui
class TestClass : QObject
{
Q_OBJECT
//% "inline function"
//@ TestClass
inline QString inlineFunc1() { return qtTrId("TestClass-inlineafunction-49197"); }
//% "inline function 2"
//@ TestClass
QString inlineFunc2() { return qtTrId("TestClass-inlineafunctiona-15831"); }
//% "static inline function"
//@ TestClass
static inline QString staticInlineFunc() { return qtTrId("TestClass-staticainlinea-95232"); }
class NoQObject : public Gui::BaseClass
{
public:
inline QString hello() { return QString("hello"); }
};
};
class Testing : QObject
{
Q_OBJECT
inline QString f1()
{
//: this is an extra comment for the translator
//% "extra-commented string"
//@ Testing
return qtTrId("Testing-extrancommenteda-21095");
//% "not extra-commented string"
//@ Testing
return qtTrId("Testing-notaextran-84860");
/*: another extra-comment */
//% "another extra-commented string"
//@ Testing
return qtTrId("Testing-anotheraextran-84557");
/*: blah! */
//% "works in translate, too"
//@ scope
return qtTrId("scope-worksaina-71845" , 0);
}
};
//: extra comment for NOOP
//: which spans multiple lines
//% "string"
//@ scope
const char *c_1 = QT_TRID_NOOP("scope-string") /*: complain & ignore */; // 4.4 says the line of this is at the next statement
//: extra comment for NOOP
const char *c_2[2] = QT_TRANSLATE_NOOP3_UTF8("scope", "string", "comment"); // 4.4 doesn't see this
//% "string continuation on next line"
//@ scope
const char *c_3 = QT_TRID_NOOP("scope-stringacontinuationa-97886");
class TestingTake17 : QObject
{
Q_OBJECT
void function(void)
{
//: random comment
//~ loc-layout_id fooish_bar
//~ po-ignore_me totally foo-barred nonsense
//% "something cool"
//@ TestingTake17
qtTrId("this_is_an_id");
//% "less cool"
//@ TestingTake17
qtTrId("TestingTake17-lessacool");
//% "even more cool"
//@ TestingTake17
qtTrId("another_id");
}
};
//: again an extra comment, this time for id-based NOOP
//% "This is supposed\tto be quoted \" newline\n"
//% "backslashed \\ stuff."
const char *c_4 = QT_TRID_NOOP("this_a_id");
//~ some thing
//% "This needs to be here. Really."
QString test = qtTrId("this_another_id", 2);
class YetAnotherTest : QObject
{
Q_OBJECT
void function(void)
{
//
//:
//=
//~
// #
//=============
//~~~~~~~~~~~~~
//:::::::::::::
//% "nothing"
//@ YetAnotherTest
qtTrId("YetAnotherTest-nothing");
}
};
class Bogus : QObject
{
Q_OBJECT
static const char *const s_stringss[];
static const char *const s_strings[];
};
//% "this should be in Bogus"
//@ Bogus
const char *const Bogus::s_strings[] = { QT_TRID_NOOP("Bogus-thisashoulda-86121") };
//% "this should be in Bogus"
//@ Bogus
const char *const Bogus::s_stringss[] = { QT_TRID_NOOP("Bogus-thisashoulda-86121") };
void bogosity()
{
// no spaces here. test collateral damage from ignoring equal sign
//% "just QObject"
//@ QObject
QString toto = qtTrId("QObject-justaQObject");
}
namespace Internal {
class Message : public QObject
{
Q_OBJECT
public:
Message(QObject *parent = 0);
};
} // namespace Internal
namespace Internal {
static inline QString message1()
{
//% "message1"
//@ Internal::Message
return qtTrId("Internal::Message-message1"); // Had no namespace
}
static inline QString message2()
{
//% "message2"
//@ Internal::Message
return qtTrId("Internal::Message-message2"); // Already had namespace
}
} // namespace Internal
class LotsaFun : public QObject
{
Q_OBJECT
public:
LotsaFun *operator<<(int i);
};
LotsaFun *LotsaFun::operator<<(int i)
{
//% "this is inside operator<<"
//@ LotsaFun
qtTrId("LotsaFun-thisaisa-78754");
return this;
}
namespace NameSchpace {
class YetMoreFun : public QObject
{
Q_OBJECT
public:
void funStuff();
};
} // namespace NameSchpace
namespace NameSchpace {
#define somevar 1
void YetMoreFun::funStuff()
{
//% "funStuff!"
//@ NameSchpace::YetMoreFun
qtTrId("NameSchpace::YetMoreFun-funStuffb!");
}
} // namespace NameSchpace
void blubb()
{
QMap<QString, QString> d;
//% "bracketed"
//@ LotsaFun
d[qtTrId("LotsaFun-bracketed")] = "plain";
}
class TestClass2
{
Q_DECLARE_TR_FUNCTIONS(TestClass);
public:
static const char TEST_STRING[];
};
//% "Test value"
//@ TestClass
const char TestClass2::TEST_STRING[] = QT_TRID_NOOP("TestClass-Testavalue");
class Class42 : public NameSchpace::YetMoreFun, Gui::BaseClass
{
Q_OBJECT
void foo();
//% "does that make sense?"
//@ Class42
Class42() : NameSchpace::YetMoreFun(), Gui::BaseClass() { qtTrId("Class42-doesathata-3807"); }
void hello(int something, QString str);
};
void Class42::foo()
{
//% "and does that?"
//@ Class42
qtTrId("Class42-andadoesa-65283");
}
//% "eyo"
//@ Class42
void Class42::hello(int something /*= 17 */, QString str = qtTrId("Class42-eyo")) { }
#include "included.cpp"
// test TR_EXCLUDE
#include "notincluded.cpp"
void dupeFail()
{
// First just the Id.
qtTrId("dupe_id");
// Then with source
//% "This is the source"
qtTrId("dupe_id");
// Finally, same source, but without ID.
QCoreApplication::translate("", "This is the source");
}
namespace Abc {
class NamespacedFinalClass;
}
class FinalClass final : public QObject
{
Q_OBJECT
class SubClass final
{
//% "nested class context with final"
//@ FinalClass
void f() { qtTrId("FinalClass-nestedaclassa-67547"); }
};
//% "class context with final"
//@ FinalClass
void f() { qtTrId("FinalClass-classacontexta-22149"); }
};
class Abc::NamespacedFinalClass final : public QObject
{
Q_OBJECT
//% "namespaced class with final"
//@ Abc::NamespacedFinalClass
void f() { qtTrId("Abc::NamespacedFinalClass-namespacedaclassa-93875"); }
};
void nullptrInPlural()
{
//% "%n nullptr(s)"
//@ QObject
qtTrId("QObject-fna-86780" , 3);
//% "%n car(s) text"
//@ Plurals, nullptr
qtTrId("Plurals, nullptr-fna-44969" , 1);
}
class nullptrClass : public QObject
{
Q_OBJECT
//% "%n car(s)"
//@ nullptrClass
void f() { qtTrId("nullptrClass-fna-29442" , 2); }
};
void nullMacroInPlural()
{
//% "%n NULL(s)"
//@ QObject
qtTrId("QObject-fna-39326" , 3);
//% "%n Q_NULLPTR(s)"
//@ QObject
qtTrId("QObject-fna-50081" , 3);
}
class ListInitializationClass : public NameSchpace::YetMoreFun, Gui::BaseClass
{
Q_OBJECT
ListInitializationClass()
: NameSchpace::YetMoreFun(),
Gui::BaseClass{},
a{ 0 },
b(1),
//% "Hello World"
//@ ListInitializationClass
c(qtTrId("ListInitializationClass-HelloaWorld"))
{
//% "ListInitializationClass in-class constructor"
//@ ListInitializationClass
qtTrId("ListInitializationClass-ListInitializationClassainn-25559");
}
ListInitializationClass(int a);
ListInitializationClass(int a, int b, int c);
int a;
int b;
QString c;
};
ListInitializationClass::ListInitializationClass(int a) // :
// b{ { 2, 3 }}[a]
{
//% "ListInitializationClass out-of-class single member initializer"
//@ ListInitializationClass
qtTrId("ListInitializationClass-ListInitializationClassaoutn-70249");
}
ListInitializationClass::ListInitializationClass(int a, int b, int c)
: NameSchpace::YetMoreFun{},
Gui::BaseClass(),
a{ 2 + (a / 3) },
b(b),
//% "%n item(s)"
//@ ListInitializationClass
c{ qtTrId("ListInitializationClass-fna-80040" , c) }
{
//% "ListInitializationClass out-of-class multi member initializer"
//@ ListInitializationClass
qtTrId("ListInitializationClass-ListInitializationClassaoutn-1547");
}
class LambdaMemberClass : public Gui::BaseClass
{
Q_OBJECT
LambdaMemberClass()
: Gui::BaseClass(),
a{ []() { /*std::cout << */
//% "Hello"
//@ QObject
qtTrId("QObject-Hello");
} },
b([]() { /*std::cout << "World\n";*/ })
{
//% "LambdaMemberClass in-class constructor"
//@ LambdaMemberClass
qtTrId("LambdaMemberClass-LambdaMemberClassainn-13046");
}
LambdaMemberClass(void *);
std::function<void()> a;
std::function<void()> b;
};
LambdaMemberClass::LambdaMemberClass(void *)
: Gui::BaseClass{},
a([]() { /*std::cout <<*/
//% "Hallo "
//@ QObject
qtTrId("QObject-Halloa ");
}),
b{ []() { /*std::cout << "Welt\n";*/ } }
{
//% "LambdaMemberClass out-of-class constructor"
//@ LambdaMemberClass
qtTrId("LambdaMemberClass-LambdaMemberClassaoutn-23253");
}
// Template parameters in base class initialization
class TemplateClass : QVarLengthArray<char, sizeof(std::size_t)>, std::vector<int>
{
Q_DECLARE_TR_FUNCTIONS(TemplateClass)
QString member;
public:
TemplateClass()
: QVarLengthArray<char, sizeof(std::size_t)>(),
std::vector<int>(3),
//% "TemplateClass() in-class member initialization"
//@ TemplateClass
member(qtTrId("TemplateClass-TemplateClassijainn-2032"))
{
//% "TemplateClass() in-class body"
//@ TemplateClass
qtTrId("TemplateClass-TemplateClassijainn-56106");
}
TemplateClass(void *);
TemplateClass(int);
};
TemplateClass::TemplateClass(void *)
: QVarLengthArray<char, sizeof(std::size_t)>(),
std::vector<int>{ 1, 2 },
//% "TemplateClass(void *) out-of-class member initialization"
//@ TemplateClass
member{ qtTrId("TemplateClass-TemplateClassivoidakja-22839") }
{
//% "TemplateClass(void *) out-of-class body"
//@ TemplateClass
qtTrId("TemplateClass-TemplateClassivoidakja-27846");
}
void ternary()
{
const auto aaa = true ?
//: comment, aaa, true
//% "ternary, true, aaa"
//@ QObject
qtTrId("QObject-ternarymatruema-96134")
//% "ternary, failure, aaa"
//@ QObject
: qtTrId("QObject-ternarymafailurema-61222");
const auto bbb = true ?
//: comment, bbb, true
//% "ternary, bbb, true"
//@ QObject
qtTrId("QObject-ternarymabbbma-71757")
:
//: comment, bbb, false
//% "ternary, bbb, false"
//@ QObject
qtTrId("QObject-ternarymabbbma-60393");
//% "ternary, fff, true"
//@ QObject
const auto ccc = true ? qtTrId("QObject-ternarymafffma-40748"): //% "ternary, fff, false"
//@ QObject
qtTrId("QObject-ternarymafffma-64929");
}
class TernaryClass : public QObject
{
Q_OBJECT
void f()
{
const auto ccc = true ?
//: comment, ccc, true
//% "ternary, ccc, true"
//@ TernaryClass
qtTrId("TernaryClass-ternarymacccma-36713")
//% "ternary, ccc, false"
//@ TernaryClass
: qtTrId("TernaryClass-ternarymacccma-6199");
const auto ddd = true ?
//: comment, ddd, true
//% "ternary, ddd, true"
//@ TernaryClass
qtTrId("TernaryClass-ternarymadddma-29323")
:
//: comment, ddd, false
//% "ternary, ddd, false"
//@ TernaryClass
qtTrId("TernaryClass-ternarymadddma-81307");
}
};
namespace Private {
template <class T>
struct Class1
{
T t;
};
template <class T>
struct Class1<T &> : Class1<T>
{
};
template <class T>
struct Class2
{
enum { Value = sizeof(T) };
};
} // namespace Private
class TranslatedAfterPrivate
{
Q_OBJECT
//% "Must be in context TranslatedAfterPrivate"
//@ TranslatedAfterPrivate
TranslatedAfterPrivate() { qtTrId("TranslatedAfterPrivate-Mustabea-86746"); }
};
#include <QObject>
class AClass
{
//% "message after system include without space"
//@ QObject
QString aa = qtTrId("QObject-messageaaftera-92243");
};
#include "qobject.h"
class AAClass
{
//% "message after local include without space"
//@ QObject
QString aa = qtTrId("QObject-messageaaftera-81654");
};
QString unicodeEscape()
{
//% "Context"
//@ QCoreApplication
return qtTrId("QCoreApplication-Context-42460");
}
namespace Outer::Inner {
class Class
{
Q_OBJECT
//% "MoreFunStuff!"
//@ Outer::Inner::Class
void function() { qtTrId("Outer::Inner::Class-MoreFunStuffb!"); }
};
} // namespace Outer::Inner
//% "string %n"
//@ scope
static const char *const test_string_n1[] = { QT_TRID_N_NOOP("scope-stringafn") };
static const char *const test_string_n2[] = QT_TRANSLATE_N_NOOP3("scope", "string %n", "comment");
class testing
{
Q_OBJECT
void test();
};
void testing::test()
{
//% "%n test"
//@ testing
static const char *const test_string_n3[] = { QT_TRID_N_NOOP("testing-fna-97572") };
}
class Hogus : QObject
{
Q_OBJECT
static const QString myString;
};
//% "this should be in Hogus"
//@ Hogus
const QString Hogus::myString(QT_TRID_NOOP("Hogus-thisashoulda-33622"));
class QTBUG99415 : QObject
{
Q_OBJECT
//% "text1"
//@ QTBUG99415
const QString text1() const noexcept { return qtTrId("QTBUG99415-text1"); }
const QString text2() const noexcept;
};
const QString QTBUG99415::text2() const noexcept
{
//% "text2"
//@ QTBUG99415
return qtTrId("QTBUG99415-text2");
}
class QTBUG110630 : QObject
{
Q_OBJECT
const QString txt()
{
//~ quoted " string with spaces "
//% "translation with extras-quoted field"
//@ QTBUG110630
qtTrId("QTBUG110630-translationawitha-24798");
}
};
// enum class - C++11
enum class Bar : unsigned short;
class QTBUG36589 : QObject
{
Q_OBJECT
//% "string after an enum class"
//@ QTBUG36589
const QString txt() { qtTrId("QTBUG36589-stringaaftera-31419");
//% "tr with a \"string\" inside it"
//@ QTBUG36589
qtTrId("QTBUG36589-trawitha-15510");
//% "another tr with a 'string' inside it"
//@ QTBUG36589
qtTrId("QTBUG36589-anotheratra-34446");
//% "yet another tr with a 'string' inside it"
//@ QTBUG36589
qtTrId("QTBUG36589-yetaanothera-60884");
}
};
class TestMetaStrings : QObject
{
Q_OBJECT
void func()
{
//@ label1
//% "msg with id1"
//@ TestMetaStrings
qtTrId("id1");
//@ label3
//% "propagating label"
qtTrId("id2");
qtTrId("id2");
//@ label5
//% "source"
qtTrId("id4");
//% "This is going to be a meta string spanning over\n"
//% "multiple lines."
//@ TestMetaStrings
qtTrId("TestMetaStrings-Thisaisa-51380");
}
};
struct Tr
{
Q_DECLARE_TR_FUNCTIONS(QtC::Help)
};
void observedBugs() {
m_includeOldEntriesAction->setToolTip(
//% "Include branches and tags that have not been active for %n days."
//@ QtC::Help
qtTrId("QtC::Help-Includeabranchesa-664" , Constants::OBSOLETE_COMMIT_AGE_IN_DAYS));
//% "[Only %n MB of output shown]"
//@ QtC::Help
qtTrId("QtC::Help-|Onlyaf-55430" , maxSize / 1024 / 1024);
}