Frameworks/Epics/KF5.0 Release Preparation/l10n: Difference between revisions

From KDE Community Wiki
 
(71 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== TODO ==
== Common tasks ==
For each framework the following needs to be done:


=== Mark strings translatable ===
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"
Make sure all strings that need to be translated are either wrapped by i18n*() or tr*() depending on the translation framework of choice.
|- style="background: #ececec; white-space:nowrap;"
! Status
! Task
! Coordination
{{FeatureDone | Decide where to place Messages.sh. Answer: src/ by default | }}
{{FeatureDone | Check the release scripts to ensure they include the .po or .ts files as well as the matching CMake code to build and install them. | }}
{{FeatureDone | Get scripty to run on l10n-kf5 | }}
|}


=== Extract translatable strings ===
== KI18n-based frameworks ==
If there is no Messages.sh file in the repository, create a src/Messages.sh file. See http://techbase.kde.org/Development/Tutorials/Localization/i18n_Build_Systems#handling_i18n_in_KDE.27s_subversion_repository for details on how to create and test it.


If there are Messages.sh files, check they are still relevant.
Framework list:
 
* frameworkintegration
* kactivities
* kcmutils
* kconfigwidgets
* kdeclarative
* kdelibs4support
* kdesu
* kdoctools (Only if SIMPLE_XSLT is not defined => Should we care?)
* kfileaudiopreview
* khtml
* ki18n
* kiconthemes
* kinit
* kio
* kjsembed
* knewstuff
* knotifyconfig
* kparts
* kpty
* kross
* kservice
* ktexteditor
* ktextwidgets
* kunitconversion
* kwallet
* kxmlgui
* plasma-framework
 
=== Status ===
 
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"
|- style="background: #ececec; white-space:nowrap;"
! Status
! Task
! Coordination
{{ FeatureDone | Add src/Messages.sh scripts | }}
{{ FeatureDone | Review existing Messages.sh scripts. Check for wrong names such as catalogs with '4' suffix, or catalogs whose name would clash with an existing KDE4 library. | }}
{{ FeatureDone | Make sure translations are loaded, meaning TRANSLATION_DOMAIN is set. This could be done as a -D switch by the build system. | }}
{{ FeatureDone |- kdeclarative: -DTRANSLATION_DOMAIN conflicts with RootContext::i18n. | }}
{{ FeatureDone |- kross: -DTRANSLATION_DOMAIN conflicts with TranslationModule::i18n. | }}
{{ FeatureDone |- ktexteditor: -DTRANSLATION_DOMAIN conflicts with i18n() in katescripthelpers.cpp. | }}
{{ FeatureDone | Create cmake functions to simplify translation integration. https://git.reviewboard.kde.org/r/117804/ https://git.reviewboard.kde.org/r/117805/ | }}
{{ FeatureDone | kdeclarative: Find a way to get qml code translated (only two strings so far). | }}
{{ FeatureDone | Fix calls to kde4_install_ts_files in trunk/l10n-kf5/scripts/autogen.sh | }}
{{ FeatureDone | Fix support for multiple .po files named the same https://git.reviewboard.kde.org/r/117997/ | }}
{{ FeatureDone | Fix support for multiple .docbook files named the same https://git.reviewboard.kde.org/r/118004/ | }}
{{ FeatureDone | Integrate translation compilation code (depends on support for multiple .po and .docbook files) | }}
|}


Things to test:
== Qt-based frameworks ==
* Make sure the Messages.sh files extract all the files
* Make sure the Messages.sh files create catalogs with correct names. Look out for catalogs with '4' suffix, or catalogs whose name would clash with an existing KDE4 library.


=== Make sure the translations are loaded ===
Framework list:
If using ki18n, make sure it follows http://api.kde.org/frameworks-api/frameworks5-apidocs/ki18n/html/prg_guide.html#link_lib . In short: Check all files with calls to i18n*() define TRANSLATION_DOMAIN '''before''' including KLocalizedString.


If using tr() ... no clue, someone should care about this. Probably have a look at how Trojita does it for Qt4 and try to generalize for KF5
* kauth
* kbookmarks
* kcodecs
* kcompletion
* kcoreaddons
* kdbusaddons
* kdesignerplugin
* kdnssd
* kglobalaccel
* kitemviews
* kjobwidgets
* knotifications
* kwidgetsaddons
* kwindowsystem
* solid
* sonnet


== Status ==
=== Status ===


{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"
|- style="background: #ececec; white-space:nowrap;"
|- style="background: #ececec; white-space:nowrap;"
! Framework
! Status
! Translation System
! Task
! Coordination
! Coordination
|-
{{ FeatureDone | Define the way to extract translations for Qt-based frameworks. | }}
| attica
{{ FeatureDone | Investigate whether it is possible to have Qt-based frameworks automatically load their transitions. Answer: yes, via a Qt macro. | }}
| -
{{ FeatureDone | Add src/Messages.sh script | }}
|
{{ FeatureDone | Check QObject::tr is correctly used | }}
|-
{{ FeatureDone | Define the way to integrate compilation of translations in build system. Done: new function added to ECM: ecm_create_qm_from_po_files() | }}
| frameworkintegration
{{ FeatureDone | Integrate translation compilation code | }}
| KI18n
{{ FeatureDone | Update framework template | }}
|
{{ FeatureDone | Extract strings from .ui files| }}
|-
{{ FeatureDone | solid: fix string extraction: it uses $XGETTEXT and $XGETTEXT_QT | }}
| kactivities
{{ FeatureDone | kwidgetsaddons: Check data for KCharSelectData is marked as translatable. See FIXME in the code | }}
| KI18n
{{ FeatureDone | kcoreaddons: check src/mimetypes/XmlMessages.sh. Check it still works and add a "5" suffix to the .po file | }}
|
{{ FeatureDone | Adjust ECM qm handling code to work with trunk/l10n-kf5 workflow. https://git.reviewboard.kde.org/r/117560/| }}
|-
{{ FeatureDone | Add a "_qt" suffix to the catalog names | }}
| karchive
{{ FeatureDone | l10n-kf5: Modify scripts/autogen.sh to create different CMake code depending on whether the .po file must be compiled into a .qm or into a .mo. A .po which must be compiled into a .qm if its catalog name ends with "_qt" | }}
| -
{{ FeatureDone | Figure out the best way to handle plural forms: right now Qt requires the creation of a plural-only .qm file for english. | }}
|
|-
| kauth
| Qt
|
|-
| kbookmarks
| Qt
|
|-
| kcmutils
| KI18n
|
|-
| kcodecs
| Qt
|
|-
| kcompletion
| Qt
|
|-
| kconfig
| KI18n
|
|-
| kconfigwidgets
| KI18n
|
|-
| kcoreaddons
| Qt
|
|-
| kcrash
| Qt
|
|-
| kdbusaddons
| Qt
|
|-
| kde4support
| KI18n
|
|-
| kdeclarative
| -
|
|-
| kded
| -
|
|-
| kdesignerplugin
| Qt
|
|-
| kdesu
| -
|
|-
| kdewebkit
| -
|
|-
| kdnssd-framework
| Qt
|
|-
| kdoctools
| KI18n
|
|-
| kemoticons
| -
|
|-
| kf5umbrella
| -
|
|-
| kfileaudiopreview
| KI18n
|
|-
| kglobalaccel
| Qt
|
|-
| kguiaddons
| -
|
|-
| khtml
| KI18n
|
|-
| ki18n
| KI18n
|
|-
| kiconthemes
| KI18n
|
|-
| kidletime
| -
|
|-
| kimageformats
| -
|
|-
| kinit
| KI18n
|
|-
| kio
| KI18n
|
|-
| kitemmodels
| -
|
|-
| kitemviews
| Qt
|
|-
| kjobwidgets
| Qt
|
|-
| kjs
| -
|
|-
| kjsembed
| KI18n
|
|-
| kmediaplayer
| -
|
|-
| knewstuff
| KI18n
|
|-
| knotifications
| Qt
|
|-
| knotifyconfig
| KI18n
|
|-
| kparts
| KI18n
|
|-
| kplotting
| -
|
|-
| kprintutils
| KI18n
|
|-
| kpty
| KI18n
|
|-
| kross
| KI18n
|
|-
| krunner
| KI18n
|
|-
| kservice
| KI18n
|
|-
| ktexteditor
| KI18n
|
|-
| ktextwidgets
| KI18n
|
|-
| kunitconversion
| KI18n
|
|-
| kwallet
| KI18n
|
|-
| kwidgetsaddons
| Qt
|
|-
| kwindowsystem
| KI18n
|
|-
| kxmlgui
| KI18n
|
|-
| plasma-framework
| KI18n
|
|-
| solid
| Qt
|
|-
| sonnet
| Qt
|
|-
| threadweaver
| -
|
|}
|}

Latest revision as of 13:14, 13 May 2014

Common tasks

Status Task Coordination
DONE Decide where to place Messages.sh. Answer: src/ by default
DONE Check the release scripts to ensure they include the .po or .ts files as well as the matching CMake code to build and install them.
DONE Get scripty to run on l10n-kf5

KI18n-based frameworks

Framework list:

  • frameworkintegration
  • kactivities
  • kcmutils
  • kconfigwidgets
  • kdeclarative
  • kdelibs4support
  • kdesu
  • kdoctools (Only if SIMPLE_XSLT is not defined => Should we care?)
  • kfileaudiopreview
  • khtml
  • ki18n
  • kiconthemes
  • kinit
  • kio
  • kjsembed
  • knewstuff
  • knotifyconfig
  • kparts
  • kpty
  • kross
  • kservice
  • ktexteditor
  • ktextwidgets
  • kunitconversion
  • kwallet
  • kxmlgui
  • plasma-framework

Status

Status Task Coordination
DONE Add src/Messages.sh scripts
DONE Review existing Messages.sh scripts. Check for wrong names such as catalogs with '4' suffix, or catalogs whose name would clash with an existing KDE4 library.
DONE Make sure translations are loaded, meaning TRANSLATION_DOMAIN is set. This could be done as a -D switch by the build system.
DONE - kdeclarative: -DTRANSLATION_DOMAIN conflicts with RootContext::i18n.
DONE - kross: -DTRANSLATION_DOMAIN conflicts with TranslationModule::i18n.
DONE - ktexteditor: -DTRANSLATION_DOMAIN conflicts with i18n() in katescripthelpers.cpp.
DONE Create cmake functions to simplify translation integration. https://git.reviewboard.kde.org/r/117804/ https://git.reviewboard.kde.org/r/117805/
DONE kdeclarative: Find a way to get qml code translated (only two strings so far).
DONE Fix calls to kde4_install_ts_files in trunk/l10n-kf5/scripts/autogen.sh
DONE Fix support for multiple .po files named the same https://git.reviewboard.kde.org/r/117997/
DONE Fix support for multiple .docbook files named the same https://git.reviewboard.kde.org/r/118004/
DONE Integrate translation compilation code (depends on support for multiple .po and .docbook files)

Qt-based frameworks

Framework list:

  • kauth
  • kbookmarks
  • kcodecs
  • kcompletion
  • kcoreaddons
  • kdbusaddons
  • kdesignerplugin
  • kdnssd
  • kglobalaccel
  • kitemviews
  • kjobwidgets
  • knotifications
  • kwidgetsaddons
  • kwindowsystem
  • solid
  • sonnet

Status

Status Task Coordination
DONE Define the way to extract translations for Qt-based frameworks.
DONE Investigate whether it is possible to have Qt-based frameworks automatically load their transitions. Answer: yes, via a Qt macro.
DONE Add src/Messages.sh script
DONE Check QObject::tr is correctly used
DONE Define the way to integrate compilation of translations in build system. Done: new function added to ECM: ecm_create_qm_from_po_files()
DONE Integrate translation compilation code
DONE Update framework template
DONE Extract strings from .ui files
DONE solid: fix string extraction: it uses $XGETTEXT and $XGETTEXT_QT
DONE kwidgetsaddons: Check data for KCharSelectData is marked as translatable. See FIXME in the code
DONE kcoreaddons: check src/mimetypes/XmlMessages.sh. Check it still works and add a "5" suffix to the .po file
DONE Adjust ECM qm handling code to work with trunk/l10n-kf5 workflow. https://git.reviewboard.kde.org/r/117560/
DONE Add a "_qt" suffix to the catalog names
DONE l10n-kf5: Modify scripts/autogen.sh to create different CMake code depending on whether the .po file must be compiled into a .qm or into a .mo. A .po which must be compiled into a .qm if its catalog name ends with "_qt"
DONE Figure out the best way to handle plural forms: right now Qt requires the creation of a plural-only .qm file for english.