> On July 12, 2011, 8:56 a.m., Christoph Feck wrote: > > kcontrol/input/xcursor/xcursortheme.cpp, line 73 > > <http://git.reviewboard.kde.org/r/101701/diff/1/?file=24784#file24784line73> > > > > Do you mean the sizes are always > 0, or do you mean the number of > > entries in the list is > 0 ("never empty")? > > > > Do we need some logic to prevent it saying "Available sizes:" when only > > one size is available? But I am not sure if i18n can handle that. > > Lukas Sommer wrote: > It means "never empty". > > This could be a solution to the plural problem: > > // The translation is aware of plural forms. i18ncp uses the > first integer argument to > // distinguish plural forms. The first and the second argument > are QString. So we use > // sizeList.size() as third argument to provide proper support > for plural forms. This > // works, although it is never referenced with %3 in the string > itself. Although we > // provide english strings only for "1 item" and for "more than 1 > item", but i18ncp > // will silently expand to as many plural forms as necesarry in > the target language. > m_description = i18ncp( > "@info/plain This is the description of the cursor themes. The > first argument is the " > "original description that comes from the index.theme file. > The second argument is " > "the list of available sizes, which is never empty. This > string is localized with " > "support for plural forms: You can make different > singular/plural translations " > "depending on the number (!) of list items in the second > argument.", > "%1 (Size: %2)" /* only 1 item in sizeListString > */ > "%1 (Available sizes: %2)" /* more than 1 item in > sizeListString */ > ).arg(m_description).arg(sizeliststring).arg(sizeList.size()); > > I'll test this after holiday. > > Chusslove Illich wrote: > i18ncp() should not be used for clever tricks. The plural string should > always be the direct pluralization of the singular string. > > I think it would be just fine to leave it at the original version, with > "... > Available sizes: ..." even if there is only one size. Also no need to > mention in the context that list of sizes is never empty. > > Otherwise, use two separate messages with ordinary if-selection. > > > Lukas Sommer wrote: > What's about merging both approaches? > > int sizeListSize = sizeList.size(); > QString sizeListString = QString::number(sizeList.takeFirst()); > while (!sizeList.isEmpty()) > { > sizeListString.append(", "); > sizeListString.append(QString::number(sizeList.takeFirst())); > }; > if (sizeList.size() == 1) > m_description = i18ncp( > "@info/plain This is the description of the cursor > themes. The first argument is " > "the original description that comes from the > index.theme file. The second " > "argument is the size (in pixel). Example: > 'OriginalDescription (Size: 24)'", > "%1 (Size: %2)").arg(m_description).arg(sizeListString); > else // sizeList.size() > 1 > /* The translation is aware of plural forms. i18ncp uses the > first integer argument to > distinguish plural forms. The first and the second > argument are QString. So we use > sizeList.size() as third argument to provide proper > support for plural forms. This > works, although it is never referenced with %3 in the > string itself. Although we > provide english strings only for "1 item" and for "more > than 1 item", but i18ncp > will silently expand to as many plural forms as necesarry > in the target language. */ > m_description = i18ncp( > "@info/plain This is the description of the cursor > themes. The first argument is " > "the original description that comes from the > index.theme file. The second " > "argument is the list of available sizes (in pixel). > This string is localized " > "with support for plural forms: You can make > different singular/plural " > "translations depending on the number (!) of list > items in the second " > "argument. Example: 'OriginalDescription (Available > sizes: 24, 36, 48)' has " > "the plural form for 3 because the list has 3 items.", > "%1 (Available size: %2)" /* only 1 item in > sizeListString - will never be used */ > "%1 (Available sizes: %2)" /* more than 1 item in > sizeListString */ > > ).arg(m_description).arg(sizeListString).arg(sizeListSize); > > This way we have a good translation for only 1 size: (Size: 24). In this > case the user can't do anything but use this size. And in the case of more > than 1 size, the user can determine himself which size he wants to use: > (Available sizes: 24. 36, 48) > > Otherwise, we could also drop the "if" block and use only the "else" > block ... > > What do you think? > > Chusslove Illich wrote: > Plural messages really are to be used only when a part of the sentence > grammatically depends on a number, and that number itself is part of the > sentence. So there should not be any kind of plural message here. > > From the style viewpoint, I personally would stick with single "Available > sizes: ..." regardless of how many sizes there actually are. If a special > message is used for the case of size == 1, I have no clear preference > between "Size:" and "Available size:". > > > Lukas Sommer wrote: > > Plural messages really are to be used only when a part of the > > sentence grammatically depends on a number > > Well, I thought this depends on the number of items ;-) In singular: > "Size: 24", but in plural "Sizes: 24, 36". > > However, when you think that this is a bad solution, we can remove it and > return to the original version (with a better comment): > > QString sizeListString = QString::number(sizeList.takeFirst()); > while (!sizeList.isEmpty()) > { > sizeListString.append(", "); > sizeListString.append(QString::number(sizeList.takeFirst())); > }; > m_description = i18nc( > "@info/plain This is the description of the cursor themes. > The first argument is " > "the original description that comes from the index.theme > file. The second " > "argument is the list of available sizes (in pixel). > Example: 'OriginalDescription " > "(Available sizes: 24)' or 'OriginalDescription > (Available sizes: 24, 36, 48)'", > "%1 (Available sizes: > %2)").arg(m_description).arg(sizeListString); > > Okay? > > Chusslove Illich wrote: > I'm fine with it. > > Not that I mind "Size:" and "Sizes:", I'm just saying that then it should > be > a size == 1 ? ... : ... construct, rather than a plural message. > > Lukas Sommer wrote: > Okay, so we stay with the original version :-) > > Chusslove Illich wrote: > But I am not seeing the trees for the wood... This: > > i18nc("...", "Foo %1 bar %2").arg(a1).arg(a2) > > should be instead: > > i18nc("...", "Foo %1 bar %2", a1, a2) >
So: QString sizeListString = QString::number(sizeList.takeFirst()); while (!sizeList.isEmpty()) { sizeListString.append(", "); sizeListString.append(QString::number(sizeList.takeFirst())); }; m_description = i18nc( "@info/plain This is the description of the cursor themes. The first argument is " "the original description that comes from the index.theme file. The second " "argument is the list of available sizes (in pixel). Example: 'OriginalDescription " "(Available sizes: 24)' or 'OriginalDescription (Available sizes: 24, 36, 48)'", "%1 (Available sizes: %2)", m_description, sizeListString); > On July 12, 2011, 8:56 a.m., Christoph Feck wrote: > > kcontrol/input/xcursor/themepage.ui, line 78 > > <http://git.reviewboard.kde.org/r/101701/diff/1/?file=24782#file24782line78> > > > > sizePolicyComboBox, there is no Police here ;) > > Lukas Sommer wrote: > How should I name this? > > Christoph Feck wrote: > name="sizePolicyComboBox" Yes, yes, now I understand ... :-) - Lukas ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: http://git.reviewboard.kde.org/r/101701/#review4633 ----------------------------------------------------------- On June 20, 2011, 10:04 a.m., Lukas Sommer wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > http://git.reviewboard.kde.org/r/101701/ > ----------------------------------------------------------- > > (Updated June 20, 2011, 10:04 a.m.) > > > Review request for KDE Base Apps, KDE Runtime, kdelibs, and Christoph Feck. > > > Summary > ------- > > X11 mouse cursor themes can contain cursors in multiple sizes, making them > pseudo-scalable. > > It is yet possible in KDE to configure manually the mouse cursor size > (editing kcminput.rc). However, the GUI of the corresponding KControl module > didn't provide support to change this. This patch add support for changing > the mouse cursor size to the GUI. > > This are mostly GUI related changes. The underlying data structure > XCursorTheme did yet provide support for choosing different sizes and only > needed some adjustments. > > > This addresses bug 90444. > http://bugs.kde.org/show_bug.cgi?id=90444 > > > Diffs > ----- > > kcontrol/input/xcursor/xcursortheme.cpp a987487 > kcontrol/input/xcursor/themepage.ui 2e38054 > kcontrol/input/xcursor/xcursortheme.h b474086 > kcontrol/input/xcursor/themepage.h 902148f > kcontrol/input/xcursor/themepage.cpp 24b9efe > kcontrol/input/xcursor/previewwidget.h f4d2c4e > kcontrol/input/xcursor/previewwidget.cpp 3c264fc > kcontrol/input/xcursor/cursortheme.h 8f7834b > kcontrol/input/xcursor/legacytheme.h 23c9d5f > > Diff: http://git.reviewboard.kde.org/r/101701/diff > > > Testing > ------- > > Tested locally. Works fine for me. Also when using non-standard font DPI > values. > > > Screenshots > ----------- > > > http://git.reviewboard.kde.org/r/101701/s/188/ > > http://git.reviewboard.kde.org/r/101701/s/189/ > > > Thanks, > > Lukas > >