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

From KDE Community Wiki
(rework page, should be more readable)
 
(54 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Preparation ==
== Common tasks ==


{| 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%;"
Line 6: Line 6:
! Task
! Task
! Coordination
! Coordination
{{FeatureDone | Decide where to place Messages.sh (src by default?) | }}
{{FeatureDone | Decide where to place Messages.sh. Answer: src/ by default | }}
{{FeatureInProgress | Define the way to extract translations for Qt-based frameworks. Patches under review.
{{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 | }}
{{FeatureDone | Investigate whether it is possible to have Qt-based frameworks automatically load their transitions | }}
{{FeatureTodo |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.
| }}
|}
|}
== Per framework TODO ==
For each framework the following needs to be done:
=== Mark strings translatable ===
Make sure all strings that need to be translated are either wrapped by i18n*() or tr*() depending on the translation API of choice.
=== Extract translatable strings ===
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.
Things to test:
* 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 translations are loaded ===
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(), make sure the list of source files include ${ECM_TR_LOADER}.


== KI18n-based frameworks ==
== KI18n-based frameworks ==
Line 38: Line 15:
Framework list:
Framework list:


* frameworkintegration
* kactivities
* kactivities
* kcmutils
* kcmutils
* kconfig
* kconfigwidgets
* kconfigwidgets
* kde4support
* kdeclarative
* kdoctools
* kdelibs4support
* kdesu
* kdoctools (Only if SIMPLE_XSLT is not defined => Should we care?)
* kfileaudiopreview
* kfileaudiopreview
* khtml
* khtml
Line 54: Line 33:
* knotifyconfig
* knotifyconfig
* kparts
* kparts
* kprintutils
* kpty
* kpty
* kross
* kross
* krunner
* kservice
* kservice
* ktexteditor
* ktexteditor
Line 63: Line 40:
* kunitconversion
* kunitconversion
* kwallet
* kwallet
* kwindowsystem
* kxmlgui
* kxmlgui
* plasma-framework
* plasma-framework


=== Status ===
=== Status ===
==== Done ====
==== Todo ====


{| 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%;"
Line 78: Line 50:
! Task
! Task
! Coordination
! Coordination
{{ FeatureTodo | Add src/Messages.sh script | }}
{{ FeatureDone | Add src/Messages.sh scripts | }}
{{ FeatureTodo | Check TRANSLATION_DOMAIN is set | }}
{{ 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. | }}
{{ FeatureTodo | Integrate translation compilation code | }}
{{ 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) | }}
|}
|}


Line 92: Line 73:
* kcompletion
* kcompletion
* kcoreaddons
* kcoreaddons
* kcrash
* kdbusaddons
* kdbusaddons
* kdesignerplugin
* kdesignerplugin
Line 101: Line 81:
* knotifications
* knotifications
* kwidgetsaddons
* kwidgetsaddons
* kwindowsystem
* solid
* solid
* sonnet
* sonnet
Line 111: Line 92:
! Task
! Task
! Coordination
! Coordination
{{ FeatureDone | Define the way to extract translations for Qt-based frameworks. | }}
{{ 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 | Add src/Messages.sh script | }}
{{ FeatureDone | Check QObject::tr is correctly used | }}
{{ FeatureDone | Check QObject::tr is correctly used | }}
{{ FeatureTodo | kwidgetsaddons: Check data for KCharSelectData is marked as translatable. See FIXME in the code | }}
{{ FeatureDone | Define the way to integrate compilation of translations in build system. Done: new function added to ECM: ecm_create_qm_from_po_files() | }}
{{ FeatureTodo | Integrate translation compilation code | }}
{{ FeatureDone | Integrate translation compilation code | }}
{{ FeatureDone | Update framework template | }}
{{ FeatureDone | Extract strings from .ui files| }}
{{ FeatureDone | solid: fix string extraction: it uses $XGETTEXT and $XGETTEXT_QT | }}
{{ FeatureDone | kwidgetsaddons: Check data for KCharSelectData is marked as translatable. See FIXME in the code | }}
{{ 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 | }}
{{ 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. | }}
|}
|}

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.