From 4a69392ce92196a0dfe90a2b1b057a1e12111450 Mon Sep 17 00:00:00 2001 From: Adam Malinowski Date: Wed, 10 Dec 2014 10:07:12 +0100 Subject: [PATCH] Add internationalization and privilege translation Change-Id: I9f903811c1ff348e430e126971d3f9cf8bb8e00d --- CMakeLists.txt | 2 ++ packaging/askuser.spec | 6 +++++- src/agent/CMakeLists.txt | 3 +++ src/agent/main/main.cpp | 6 +++++- src/agent/po/CMakeLists.txt | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/agent/po/en.po | 14 ++++++++++++++ src/agent/po/pl.po | 15 +++++++++++++++ 7 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 src/agent/po/CMakeLists.txt create mode 100644 src/agent/po/en.po create mode 100644 src/agent/po/pl.po diff --git a/CMakeLists.txt b/CMakeLists.txt index 61ec81f..92e9414 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,6 +60,8 @@ ADD_DEFINITIONS("-Wextra") # Generate even more extra warni # Don't export symbols by default ADD_DEFINITIONS("-fvisibility=hidden") +# Pass project name to sources +ADD_DEFINITIONS("-DPROJECT_NAME=\"${PROJECT_NAME}\"") IF (CMAKE_BUILD_TYPE MATCHES "DEBUG") ADD_DEFINITIONS("-DBUILD_TYPE_DEBUG") diff --git a/packaging/askuser.spec b/packaging/askuser.spec index c3614f9..2653053 100644 --- a/packaging/askuser.spec +++ b/packaging/askuser.spec @@ -8,7 +8,10 @@ Source0: %{name}-%{version}.tar.gz Source1001: %{name}.manifest Source1002: libaskuser-common.manifest Source1003: askuser-plugins.manifest +BuildRequires: capi-security-privilege-manager-devel BuildRequires: cmake +BuildRequires: gettext-tools +BuildRequires: pkgconfig(capi-base-common) BuildRequires: pkgconfig(cynara-agent) BuildRequires: pkgconfig(cynara-plugin) BuildRequires: pkgconfig(libsystemd-daemon) @@ -62,6 +65,7 @@ make %{?jobs:-j%jobs} %install rm -rf %{buildroot} %make_install +%find_lang %{name} %post systemctl daemon-reload @@ -86,7 +90,7 @@ fi %postun -n libaskuser-common -p /sbin/ldconfig -%files +%files -f %{name}.lang %manifest %{name}.manifest %license LICENSE %attr(755,root,root) /usr/bin/%{name} diff --git a/src/agent/CMakeLists.txt b/src/agent/CMakeLists.txt index 8748112..0f57e63 100644 --- a/src/agent/CMakeLists.txt +++ b/src/agent/CMakeLists.txt @@ -42,6 +42,9 @@ TARGET_LINK_LIBRARIES(${TARGET_ASKUSER} ${AGENT_DEP_LIBRARIES} ${ASKUSER_DEP_LIBRARIES} ${TARGET_ASKUSER_COMMON} + -lcapi-security-privilege-manager ) INSTALL(TARGETS ${TARGET_ASKUSER} DESTINATION ${BIN_INSTALL_DIR}) + +ADD_SUBDIRECTORY(po) diff --git a/src/agent/main/main.cpp b/src/agent/main/main.cpp index d8857ba..34d8d6c 100644 --- a/src/agent/main/main.cpp +++ b/src/agent/main/main.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved + * Copyright (c) 2014-2015 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ * @brief Main ask user daemon file */ +#include #include #include #include @@ -32,6 +33,9 @@ int main(int argc UNUSED, char **argv UNUSED) { init_log(); + char *locale = setlocale(LC_ALL, ""); + LOGD("Current locale is: <" << locale << ">"); + try { AskUser::Agent::Agent agent; diff --git a/src/agent/po/CMakeLists.txt b/src/agent/po/CMakeLists.txt new file mode 100644 index 0000000..3cb076f --- /dev/null +++ b/src/agent/po/CMakeLists.txt @@ -0,0 +1,44 @@ +# Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# @file CMakeLists.txt +# @author Adam Malinowski +# + +SET(POFILES + en.po pl.po +) + +SET(PREFIX ${CMAKE_INSTALL_PREFIX}) +SET(SHAREDIR "${PREFIX}/share") +SET(LOCALEDIR "${SHAREDIR}/locale") +SET(MSGFMT "/usr/bin/msgfmt") + +FOREACH(pofile ${POFILES}) + SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile}) + MESSAGE("PO: ${pofile}") + GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE) + GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE) + SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo) + ADD_CUSTOM_COMMAND( + OUTPUT ${moFile} + COMMAND ${MSGFMT} -o ${moFile} ${absPofile} + DEPENDS ${absPofile} + ) + INSTALL(FILES ${moFile} + DESTINATION ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo) + SET(moFiles ${moFiles} ${moFile}) +ENDFOREACH(pofile) + +ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles}) diff --git a/src/agent/po/en.po b/src/agent/po/en.po new file mode 100644 index 0000000..e433e84 --- /dev/null +++ b/src/agent/po/en.po @@ -0,0 +1,14 @@ +msgid "SID_PRIVILEGE_REQUEST_DIALOG_TITLE" +msgstr "Privilege request" + +msgid "SID_PRIVILEGE_REQUEST_DIALOG_BUTTON_NO" +msgstr "No" + +msgid "SID_PRIVILEGE_REQUEST_DIALOG_BUTTON_YES" +msgstr "Yes" + +msgid "SID_PRIVILEGE_REQUEST_DIALOG_BUTTON_YES_FOR_SESSION" +msgstr "Yes, for current session" + +msgid "SID_PRIVILEGE_REQUEST_DIALOG_MESSAGE" +msgstr "Application: %s, ran by user: %s, requested privilege:\n%s\nGrant access to privilege?" diff --git a/src/agent/po/pl.po b/src/agent/po/pl.po new file mode 100644 index 0000000..37b41b4 --- /dev/null +++ b/src/agent/po/pl.po @@ -0,0 +1,15 @@ +msgid "SID_PRIVILEGE_REQUEST_DIALOG_TITLE" +msgstr "Żądanie dostępu" + +msgid "SID_PRIVILEGE_REQUEST_DIALOG_BUTTON_NO" +msgstr "Nie" + +msgid "SID_PRIVILEGE_REQUEST_DIALOG_BUTTON_YES" +msgstr "Tak" + +msgid "SID_PRIVILEGE_REQUEST_DIALOG_BUTTON_YES_FOR_SESSION" +msgstr "Tak, dla bieżącej sesji" + +msgid "SID_PRIVILEGE_REQUEST_DIALOG_MESSAGE" +msgstr "Aplikacja: %s, uruchomiona przez użytkownika: %s, zażądała zasobu:\n %s\nUdzielić dostępu?" + -- 2.7.4