objectbrowser: Use pluralisable strings in the description pane

This avoids having ungrammatical text like “1 items”.

Change-Id: I292f398bcfd2375f7b838e99230f6493840ccedb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206347
Tested-by: Jenkins
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
This commit is contained in:
Neil Roberts
2026-07-12 10:38:02 +02:00
parent c8f2e03a4f
commit e0620bd443
4 changed files with 18 additions and 11 deletions
+4 -3
View File
@@ -21,6 +21,7 @@
#define BASCTL_INC_BASIDESH_HRC
#define NC_(Context, String) TranslateId(Context, u8##String)
#define NNC_(Context, StringSingular, StringPlural) TranslateNId(Context, reinterpret_cast<char const *>(u8##StringSingular), reinterpret_cast<char const *>(u8##StringPlural))
#define RID_STR_FILTER_ALLFILES NC_("RID_STR_FILTER_ALLFILES", "<All>")
#define RID_STR_NOMODULE NC_("RID_STR_NOMODULE", "< No Module >")
@@ -130,13 +131,13 @@
#define RID_STR_OB_FULLNAME_HEADER NC_("RID_STR_OB_FULLNAME_HEADER", "\nFull Name\n")
#define RID_STR_OB_CONTENTS_HEADER NC_("RID_STR_OB_CONTENTS_HEADER", "Contents\n")
#define RID_STR_OB_TOTAL_MEMBERS NC_("RID_STR_OB_TOTAL_MEMBERS", "Total members: ")
#define RID_STR_OB_CONTAINS_ITEMS NC_("RID_STR_OB_CONTAINS_ITEMS", "Contains %1 items")
#define RID_STR_OB_CONTAINS_ITEMS NNC_("RID_STR_OB_CONTAINS_ITEMS", "Contains 1 item", "Contains %1 items")
// For Access Modifiers
#define RID_STR_OB_ACCESS_PUBLIC NC_("RID_STR_OB_ACCESS_PUBLIC", "Public")
#define RID_STR_OB_ACCESS_PRIVATE NC_("RID_STR_OB_ACCESS_PRIVATE", "Private")
// For Status Bar
#define RID_STR_OB_MEMBERS_COUNT NC_("RID_STR_OB_MEMBERS_COUNT", "%1 members")
#define RID_STR_OB_ITEMS_COUNT NC_("RID_STR_OB_ITEMS_COUNT", "%1 items")
#define RID_STR_OB_MEMBERS_COUNT NNC_("RID_STR_OB_MEMBERS_COUNT", "1 member", "%1 members")
#define RID_STR_OB_ITEMS_COUNT NNC_("RID_STR_OB_ITEMS_COUNT", "1 item", "%1 items")
#define RID_STR_OB_READY NC_("RID_STR_OB_READY", "Ready")
#define RID_STR_OB_READY_LOADED NC_("RID_STR_OB_READY_LOADED", "✅ Ready (loaded in %1s)")
// For Symbol Type Names
+6
View File
@@ -111,6 +111,12 @@ OUString IDEResId(TranslateId aId)
return Translate::get(aId, SfxApplication::GetModule(SfxToolsModule::Basic)->GetResLocale());
}
OUString IDEResId(TranslateNId aContextSingularPlural, int nCardinality)
{
return Translate::nget(aContextSingularPlural, nCardinality,
SfxApplication::GetModule(SfxToolsModule::Basic)->GetResLocale());
}
namespace
{
+7 -8
View File
@@ -415,9 +415,9 @@ OUString FormatContainerSignature(const IdeSymbolInfo& rSymbol,
{
auto aChildren = pDataProvider->GetChildNodes(rSymbol);
sal_Int64 nChildren = static_cast<sal_Int64>(aChildren.size());
sInfo.append(
IDEResId(RID_STR_OB_CONTENTS_HEADER)
+ IDEResId(RID_STR_OB_CONTAINS_ITEMS).replaceFirst(u"%1", OUString::number(nChildren)));
sInfo.append(IDEResId(RID_STR_OB_CONTENTS_HEADER)
+ IDEResId(RID_STR_OB_CONTAINS_ITEMS, nChildren)
.replaceFirst(u"%1", OUString::number(nChildren)));
}
if (!rSymbol.sQualifiedName.isEmpty() && rSymbol.sQualifiedName != rSymbol.sName)
@@ -1004,16 +1004,15 @@ void ObjectBrowser::UpdateStatusBar(const IdeSymbolInfo* pLeftSymbol,
for (const auto& pair : aMembers)
nTotalMembers += pair.second.size();
sStatusText
= IDEResId(RID_STR_OB_MEMBERS_COUNT)
= IDEResId(RID_STR_OB_MEMBERS_COUNT, nTotalMembers)
.replaceFirst(u"%1", OUString::number(static_cast<sal_Int64>(nTotalMembers)));
}
else if (IsExpandable(*pLeftSymbol))
{
auto aChildren = m_pDataProvider->GetChildNodes(*pLeftSymbol);
size_t nChildren = m_pDataProvider->GetChildNodes(*pLeftSymbol).size();
sStatusText
= IDEResId(RID_STR_OB_ITEMS_COUNT)
.replaceFirst(u"%1",
OUString::number(static_cast<sal_Int64>(aChildren.size())));
= IDEResId(RID_STR_OB_ITEMS_COUNT, nChildren)
.replaceFirst(u"%1", OUString::number(static_cast<sal_Int64>(nChildren)));
}
else
{
+1
View File
@@ -25,6 +25,7 @@
namespace basctl
{
OUString IDEResId(TranslateId aId);
OUString IDEResId(TranslateNId aContextSingularPlural, int nCardinality);
} // namespace basctl