macOS:i18n: Include translations in app bundle

This commit is contained in:
TellowKrinkle 2020-09-11 23:00:58 -05:00 committed by tellowkrinkle
parent 5470f7ff5e
commit 91e8e0d33c
3 changed files with 22 additions and 1 deletions

View File

@ -52,6 +52,21 @@ MACRO(GETTEXT_CREATE_TRANSLATIONS_PCSX2 _potFile _firstPoFileArg)
GET_FILENAME_COMPONENT(_gmoBase ${_absFile} NAME_WE)
GET_FILENAME_COMPONENT(_lang ${_abs_PATH} NAME_WE)
SET(_gmoFile ${CMAKE_BINARY_DIR}/${_lang}__${_gmoBase}.gmo)
IF (APPLE)
# CMake doesn't support generator expressions as the OUTPUT of a custom command
# Instead, use ${_gmoFile} to detect changes, and output to the bundle as a side effect
# In addition, we have have to preprocess the po files to remove mnemonics:
# On Windows, menu items have "mnemonics", the items with a letter underlined that you can use with alt to select menu items. MacOS doesn't do this.
# Some languages don't use easily-typable characters, so it's common to add a dedicated character for the mnemonic (e.g. in Japanese on Windows, the File menu would be "ファイル(&F)").
# On MacOS, these extra letters in parentheses are useless and should be avoided.
SET(_mnemonicless "${CMAKE_BINARY_DIR}/${_lang}__${_gmoBase}.nomnemonic.po")
SET(_extraCommands
COMMAND sed -e "\"s/[(]&[A-Za-z][)]//g\"" "${_absFile}" > "${_mnemonicless}"
COMMAND ${CMAKE_COMMAND} -E make_directory "$<TARGET_FILE_DIR:PCSX2>/../Resources/${_lang}/"
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o "$<TARGET_FILE_DIR:PCSX2>/../Resources/${_lang}/${_potBasename}.mo" ${_mnemonicless})
ELSE (APPLE)
SET(_extraCommands)
ENDIF (APPLE)
IF (_currentPoFile MATCHES "\\.git")
continue()
@ -61,10 +76,12 @@ MACRO(GETTEXT_CREATE_TRANSLATIONS_PCSX2 _potFile _firstPoFileArg)
ADD_CUSTOM_COMMAND( OUTPUT ${_gmoFile}
COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --quiet --update --backup=none -s ${_absFile} ${_absPotFile}
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_absFile}
${_extraCommands}
DEPENDS ${_absPotFile} ${_absFile} )
ELSE (CMAKE_BUILD_PO)
ADD_CUSTOM_COMMAND( OUTPUT ${_gmoFile}
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_absFile}
${_extraCommands}
DEPENDS ${_absPotFile} ${_absFile} )
ENDIF (CMAKE_BUILD_PO)

View File

@ -244,7 +244,11 @@ namespace PathDefs
wxDirName GetLangs()
{
#ifdef __APPLE__
return wxDirName(wxStandardPaths::Get().GetResourcesDir());
#else
return AppRoot() + Base::Langs();
#endif
}
wxDirName Get( FoldersEnum_t folderidx )

View File

@ -362,7 +362,7 @@ void i18n_SetLanguagePath()
// default location for windows
wxLocale::AddCatalogLookupPathPrefix( wxGetCwd() );
// additional location for linux
#ifdef __unix__
#if defined(__unix__) || defined(__APPLE__)
wxLocale::AddCatalogLookupPathPrefix( PathDefs::GetLangs().ToString() );
#endif