From 823740e1ffa2b3bd39f8dea8062f5c5a0d9c741b Mon Sep 17 00:00:00 2001 From: Daniel Wilhelm Date: Thu, 20 Apr 2017 16:55:28 -0600 Subject: normalize most lineendings --- zen/i18n.h | 238 ++++++++++++++++++++++++++++++------------------------------- 1 file changed, 119 insertions(+), 119 deletions(-) (limited to 'zen/i18n.h') diff --git a/zen/i18n.h b/zen/i18n.h index ef3f3706..c7d1d5dc 100755 --- a/zen/i18n.h +++ b/zen/i18n.h @@ -1,119 +1,119 @@ -// ***************************************************************************** -// * This file is part of the FreeFileSync project. It is distributed under * -// * GNU General Public License: http://www.gnu.org/licenses/gpl-3.0 * -// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved * -// ***************************************************************************** - -#ifndef I18_N_H_3843489325044253425456 -#define I18_N_H_3843489325044253425456 - -#include -#include -#include "globals.h" -#include "string_tools.h" -#include "format_unit.h" - -//minimal layer enabling text translation - without platform/library dependencies! - -#define ZEN_TRANS_CONCAT_SUB(X, Y) X ## Y -#define _(s) zen::implementation::translate(ZEN_TRANS_CONCAT_SUB(L, s)) -#define _P(s, p, n) zen::implementation::translate(ZEN_TRANS_CONCAT_SUB(L, s), ZEN_TRANS_CONCAT_SUB(L, p), n) -//source and translation are required to use %x as number placeholder -//for plural form, which will be substituted automatically!!! - -namespace zen -{ -//implement handler to enable program-wide localizations: -struct TranslationHandler -{ - //THREAD-SAFETY: "const" member must model thread-safe access! - TranslationHandler() {} - virtual ~TranslationHandler() {} - - //C++11: std::wstring should be thread-safe like an int - virtual std::wstring translate(const std::wstring& text) const = 0; //simple translation - virtual std::wstring translate(const std::wstring& singular, const std::wstring& plural, int64_t n) const = 0; - -private: - TranslationHandler (const TranslationHandler&) = delete; - TranslationHandler& operator=(const TranslationHandler&) = delete; -}; - -void setTranslator(std::unique_ptr&& newHandler); //take ownership -std::shared_ptr getTranslator(); - - - - - - - - - - - - - -//######################## implementation ############################## -namespace implementation -{ -inline -std::wstring translate(const std::wstring& text) -{ - if (std::shared_ptr t = getTranslator()) //std::shared_ptr => temporarily take (shared) ownership while using the interface! - return t->translate(text); - return text; -} - - -//translate plural forms: "%x day" "%x days" -//returns "1 day" if n == 1; "123 days" if n == 123 for english language -inline -std::wstring translate(const std::wstring& singular, const std::wstring& plural, int64_t n) -{ - assert(contains(plural, L"%x")); - - if (std::shared_ptr t = getTranslator()) - { - std::wstring translation = t->translate(singular, plural, n); - assert(!contains(translation, L"%x")); - return translation; - } - - return replaceCpy(std::abs(n) == 1 ? singular : plural, L"%x", toGuiString(n)); -} - - -template inline -std::wstring translate(const std::wstring& singular, const std::wstring& plural, T n) -{ - static_assert(sizeof(n) <= sizeof(int64_t), ""); - return translate(singular, plural, static_cast(n)); -} - - -inline -Global& refGlobalTranslationHandler() -{ - //getTranslator() may be called even after static objects of this translation unit are destroyed! - static Global inst; //external linkage even in header! - return inst; -} -} - - -inline -void setTranslator(std::unique_ptr&& newHandler) -{ - implementation::refGlobalTranslationHandler().set(std::move(newHandler)); -} - - -inline -std::shared_ptr getTranslator() -{ - return implementation::refGlobalTranslationHandler().get(); -} -} - -#endif //I18_N_H_3843489325044253425456 +// ***************************************************************************** +// * This file is part of the FreeFileSync project. It is distributed under * +// * GNU General Public License: http://www.gnu.org/licenses/gpl-3.0 * +// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved * +// ***************************************************************************** + +#ifndef I18_N_H_3843489325044253425456 +#define I18_N_H_3843489325044253425456 + +#include +#include +#include "globals.h" +#include "string_tools.h" +#include "format_unit.h" + +//minimal layer enabling text translation - without platform/library dependencies! + +#define ZEN_TRANS_CONCAT_SUB(X, Y) X ## Y +#define _(s) zen::implementation::translate(ZEN_TRANS_CONCAT_SUB(L, s)) +#define _P(s, p, n) zen::implementation::translate(ZEN_TRANS_CONCAT_SUB(L, s), ZEN_TRANS_CONCAT_SUB(L, p), n) +//source and translation are required to use %x as number placeholder +//for plural form, which will be substituted automatically!!! + +namespace zen +{ +//implement handler to enable program-wide localizations: +struct TranslationHandler +{ + //THREAD-SAFETY: "const" member must model thread-safe access! + TranslationHandler() {} + virtual ~TranslationHandler() {} + + //C++11: std::wstring should be thread-safe like an int + virtual std::wstring translate(const std::wstring& text) const = 0; //simple translation + virtual std::wstring translate(const std::wstring& singular, const std::wstring& plural, int64_t n) const = 0; + +private: + TranslationHandler (const TranslationHandler&) = delete; + TranslationHandler& operator=(const TranslationHandler&) = delete; +}; + +void setTranslator(std::unique_ptr&& newHandler); //take ownership +std::shared_ptr getTranslator(); + + + + + + + + + + + + + +//######################## implementation ############################## +namespace implementation +{ +inline +std::wstring translate(const std::wstring& text) +{ + if (std::shared_ptr t = getTranslator()) //std::shared_ptr => temporarily take (shared) ownership while using the interface! + return t->translate(text); + return text; +} + + +//translate plural forms: "%x day" "%x days" +//returns "1 day" if n == 1; "123 days" if n == 123 for english language +inline +std::wstring translate(const std::wstring& singular, const std::wstring& plural, int64_t n) +{ + assert(contains(plural, L"%x")); + + if (std::shared_ptr t = getTranslator()) + { + std::wstring translation = t->translate(singular, plural, n); + assert(!contains(translation, L"%x")); + return translation; + } + + return replaceCpy(std::abs(n) == 1 ? singular : plural, L"%x", toGuiString(n)); +} + + +template inline +std::wstring translate(const std::wstring& singular, const std::wstring& plural, T n) +{ + static_assert(sizeof(n) <= sizeof(int64_t), ""); + return translate(singular, plural, static_cast(n)); +} + + +inline +Global& refGlobalTranslationHandler() +{ + //getTranslator() may be called even after static objects of this translation unit are destroyed! + static Global inst; //external linkage even in header! + return inst; +} +} + + +inline +void setTranslator(std::unique_ptr&& newHandler) +{ + implementation::refGlobalTranslationHandler().set(std::move(newHandler)); +} + + +inline +std::shared_ptr getTranslator() +{ + return implementation::refGlobalTranslationHandler().get(); +} +} + +#endif //I18_N_H_3843489325044253425456 -- cgit