Changeset 2757
- Timestamp:
- 06/18/08 23:58:57 (7 months ago)
- Location:
- vidalia/trunk
- Files:
-
- 5 modified
-
cmake/VidaliaMacros.cmake (modified) (2 diffs)
-
src/vidalia/CMakeLists.txt (modified) (3 diffs)
-
src/vidalia/i18n/CMakeLists.txt (modified) (1 diff)
-
src/vidalia/i18n/vidalia_i18n.qrc (modified) (2 diffs)
-
src/vidalia/languagesupport.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
vidalia/trunk/cmake/VidaliaMacros.cmake
r2438 r2757 11 11 ## 12 12 13 ## Tool used to convert Qt's .ts files to GNU gettext .po format 14 set(VIDALIA_TS2PO_EXECUTABLE ${Vidalia_BINARY_DIR}/src/tools/ts2po/ts2po) 15 if (WIN32) 16 set(VIDALIA_TS2PO_EXECUTABLE ${VIDALIA_TS2PO_EXECUTABLE}.exe) 17 endif(WIN32) 18 19 ## Tool used to convert GNU gettext .po files to Qt's .ts format 20 set(VIDALIA_PO2TS_EXECUTABLE ${Vidalia_BINARY_DIR}/src/tools/po2ts/po2ts) 21 if (WIN32) 22 set(VIDALIA_PO2TS_EXECUTABLE ${VIDALIA_PO2TS_EXECUTABLE}.exe) 23 endif(WIN32) 24 13 25 14 26 ## Search for lrelease … … 44 56 endif(WIN32) 45 57 46 47 ## Wraps the supplied .ts files in lrelease commands 48 macro(QT4_ADD_TRANSLATIONS outfiles) 58 ## Adds custom commands to the specified target that will update each of the 59 ## supplied .po files 60 macro(VIDALIA_UPDATE_PO TARGET) 61 ## Gather a list of all the files that might contain translated strings 62 FILE(GLOB_RECURSE translate_SRCS ${Vidalia_SOURCE_DIR}/*.cpp) 63 FILE(GLOB_RECURSE translate_HDRS ${Vidalia_SOURCE_DIR}/*.h) 64 FILE(GLOB_RECURSE translate_UIS ${Vidalia_SOURCE_DIR}/*.ui) 65 set(translate_SRCS ${translate_SRCS} ${translate_HDRS} ${translate_UIS}) 66 49 67 foreach (it ${ARGN}) 50 get_filename_component(it ${it} ABSOLUTE) 68 get_filename_component(po ${it} ABSOLUTE) 69 get_filename_component(podir ${it} PATH) 51 70 get_filename_component(outfile ${it} NAME_WE) 52 71 53 ## XXX: Ideally we would output the .qm files to CMAKE_CURRENT_BINARY_DIR, 54 ## but then RCC can't find them when doing out-of-source builds. Is 55 ## there an easy fix for this? 56 set(outfile ${CMAKE_CURRENT_SOURCE_DIR}/${outfile}.qm) 57 add_custom_command(OUTPUT ${outfile} 72 set(ts ${CMAKE_CURRENT_BINARY_DIR}/${outfile}.ts) 73 add_custom_command(TARGET ${TARGET} 74 # Convert the current .po files to .ts 75 COMMAND ${VIDALIA_PO2TS_EXECUTABLE} 76 ARGS -q -i ${po} -o ${ts} 77 # Update the .ts files 78 COMMAND ${QT_LUPDATE_EXECUTABLE} 79 ARGS -silent -noobsolete ${translate_SRCS} -ts ${ts} 80 # Convert the updated .ts files back to .po 81 COMMAND ${VIDALIA_TS2PO_EXECUTABLE} 82 ARGS -q -i ${ts} -o ${po} 83 DEPENDS ${VIDALIA_TS2PO_EXECUTABLE} ${VIDALIA_PO2TS_EXECUTABLE} 84 COMMENT "Updating translation ${it}" 85 ) 86 endforeach(it) 87 add_dependencies(${TARGET} ts2po) 88 add_dependencies(${TARGET} po2ts) 89 endmacro(VIDALIA_UPDATE_PO) 90 91 92 ## Wraps the supplied .po files with commands to convert them to Qt's .qm 93 ## format 94 macro(VIDALIA_ADD_PO outfiles) 95 foreach (it ${ARGN}) 96 get_filename_component(po ${it} ABSOLUTE) 97 get_filename_component(outfile ${it} NAME_WE) 98 99 ## Create the .po -> .ts conversion step 100 set(ts ${CMAKE_CURRENT_BINARY_DIR}/${outfile}.ts) 101 set(qm ${CMAKE_CURRENT_BINARY_DIR}/${outfile}.qm) 102 add_custom_command(OUTPUT ${qm} 103 COMMAND ${VIDALIA_PO2TS_EXECUTABLE} 104 ARGS -q -i ${po} -o ${ts} 58 105 COMMAND ${QT_LRELEASE_EXECUTABLE} 59 ARGS -compress -silent -nounfinished ${it} -qm ${outfile} 60 MAIN_DEPENDENCY ${it} 106 ARGS -compress -silent -nounfinished ${ts} -qm ${qm} 107 MAIN_DEPENDENCY ${po} 108 DEPENDS ${VIDALIA_PO2TS_EXECUTABLE} 109 COMMENT "Generating ${outfile}.qm" 61 110 ) 62 set(${outfiles} ${${outfiles}} ${ outfile})111 set(${outfiles} ${${outfiles}} ${qm}) 63 112 endforeach(it) 64 endmacro( QT4_ADD_TRANSLATIONS)113 endmacro(VIDALIA_ADD_PO) 65 114 66 115 -
vidalia/trunk/src/vidalia/CMakeLists.txt
r2648 r2757 21 21 ${CMAKE_CURRENT_SOURCE_DIR}/res/vidalia_win.rc.in 22 22 ${CMAKE_CURRENT_SOURCE_DIR}/res/vidalia_win.rc 23 ) 24 configure_file( 25 ${CMAKE_CURRENT_SOURCE_DIR}/i18n/vidalia_i18n.qrc 26 ${CMAKE_CURRENT_BINARY_DIR}/i18n/vidalia_i18n.qrc 23 27 ) 24 28 … … 214 218 qt4_add_resources(vidalia_SRCS 215 219 res/vidalia.qrc 216 i18n/vidalia_i18n.qrc217 220 help/content/content.qrc 221 ${CMAKE_CURRENT_BINARY_DIR}/i18n/vidalia_i18n.qrc 218 222 ) 219 223 … … 255 259 endif(WIN32) 256 260 endif(APPLE) 257 add_dependencies(${vidalia_BIN} translations)261 add_dependencies(${vidalia_BIN} i18n) 258 262 259 263 -
vidalia/trunk/src/vidalia/i18n/CMakeLists.txt
r2747 r2757 13 13 14 14 ## Vidalia translation files 15 set(vidalia_TS 16 vidalia_ar.ts 17 vidalia_bg.ts 18 vidalia_cs.ts 19 vidalia_de.ts 20 vidalia_en.ts 21 vidalia_es.ts 22 vidalia_fa.ts 23 vidalia_fi.ts 24 vidalia_fr.ts 25 vidalia_he.ts 26 vidalia_hu.ts 27 vidalia_it.ts 28 vidalia_ja.ts 29 vidalia_nb.ts 30 vidalia_nl.ts 31 vidalia_pl.ts 32 vidalia_pt.ts 33 vidalia_ru.ts 34 vidalia_sq.ts 35 vidalia_sv.ts 36 vidalia_tr.ts 37 vidalia_zh-cn.ts 38 vidalia_zh-tw.ts 15 set(vidalia_PO 16 ar/vidalia_ar.po 17 bg/vidalia_bg.po 18 cs/vidalia_cs.po 19 de/vidalia_de.po 20 es/vidalia_es.po 21 fa/vidalia_fa.po 22 fi/vidalia_fi.po 23 fr/vidalia_fr.po 24 he/vidalia_he.po 25 hu/vidalia_hu.po 26 it/vidalia_it.po 27 ja/vidalia_ja.po 28 nb/vidalia_nb.po 29 nl/vidalia_nl.po 30 pl/vidalia_pl.po 31 pt/vidalia_pt.po 32 ru/vidalia_ru.po 33 sq/vidalia_sq.po 34 sv/vidalia_sv.po 35 tr/vidalia_tr.po 36 zh_CN/vidalia_zh_CN.po 37 zh_TW/vidalia_zh_TW.po 39 38 ) 40 qt4_add_translations(vidalia_QMS ${vidalia_TS})39 vidalia_add_po(vidalia_QMS ${vidalia_PO}) 41 40 42 ## Gather a list of all the files that might contain translated strings 43 FILE(GLOB_RECURSE translate_SRCS ${Vidalia_SOURCE_DIR}/src/*.cpp) 44 FILE(GLOB_RECURSE translate_HDRS ${Vidalia_SOURCE_DIR}/src/*.h) 45 FILE(GLOB_RECURSE translate_UIS ${Vidalia_SOURCE_DIR}/src/*.ui) 46 set(translate_SRCS ${translate_SRCS} ${translate_HDRS} ${translate_UIS}) 41 ## Create a target that converts all .po files to Qt .qm files 42 add_custom_target(i18n ALL DEPENDS ${vidalia_QMS}) 47 43 48 44 ## Create a target that runs lupdate for all the source and UI files 49 add_custom_target(lupdate 50 COMMAND ${QT_LUPDATE_EXECUTABLE} -noobsolete ${translate_SRCS} -ts ${vidalia_TS} 51 ) 52 add_dependencies(lupdate ts2po) 45 add_custom_target(i18n-update) 46 vidalia_update_po(i18n-update ${vidalia_PO}) 53 47 54 ## Create a target that runs lrelease for all the .ts files55 add_custom_target(translations ALL DEPENDS ${vidalia_QMS})56 add_dependencies(translations po2ts)57 -
vidalia/trunk/src/vidalia/i18n/vidalia_i18n.qrc
r2599 r2757 5 5 <file>vidalia_cs.qm</file> 6 6 <file>vidalia_de.qm</file> 7 <file>vidalia_en.qm</file>8 7 <file>vidalia_es.qm</file> 9 8 <file>vidalia_fa.qm</file> … … 22 21 <file>vidalia_sv.qm</file> 23 22 <file>vidalia_tr.qm</file> 24 <file>vidalia_zh -cn.qm</file>25 <file>vidalia_zh -tw.qm</file>23 <file>vidalia_zh_CN.qm</file> 24 <file>vidalia_zh_TW.qm</file> 26 25 </qresource> 27 26 </RCC> -
vidalia/trunk/src/vidalia/languagesupport.cpp
r2600 r2757 62 62 languages.insert("sv", "svenska"); 63 63 languages.insert("tr", QString::fromUtf8("T\303\274rk\303\247e")); 64 languages.insert("zh -cn",64 languages.insert("zh_CN", 65 65 QString::fromUtf8("\347\256\200\344\275\223\345\255\227")); 66 languages.insert("zh -tw",66 languages.insert("zh_TW", 67 67 QString::fromUtf8("\347\260\241\351\253\224\345\255\227")); 68 68 } … … 74 74 LanguageSupport::defaultLanguageCode() 75 75 { 76 QString localeName = QLocale::system().name(); 77 QString language = localeName.mid(0, localeName.indexOf("_")); 78 if (language == "zh") { 79 language += "-" + localeName.mid(localeName.indexOf("_")+1).toLower(); 80 } 81 if (!isValidLanguageCode(language)) { 76 QString language = QLocale::system().name(); 77 78 if (language != "zh_CN" && language != "zh_TW") 79 language = language.mid(0, language.indexOf("_")); 80 if (!isValidLanguageCode(language)) 82 81 language = "en"; 83 }82 84 83 return language; 85 84 } … … 133 132 LanguageSupport::translate(const QString &languageCode) 134 133 { 135 QString code = languageCode.toLower(); 136 if (isValidLanguageCode(code)) { 137 QTranslator *translator = new QTranslator(vApp); 138 if (translator->load(QString(":/lang/vidalia_%1.qm").arg(code))) { 139 QApplication::installTranslator(translator); 140 if (isRightToLeft(code)) 141 vApp->setLayoutDirection(Qt::RightToLeft); 142 return true; 143 } 144 delete translator; 134 if (!isValidLanguageCode(languageCode)) 135 return false; 136 if (languageCode == "en") 137 return true; 138 139 QTranslator *translator = new QTranslator(vApp); 140 if (translator->load(QString(":/lang/vidalia_%1.qm").arg(languageCode))) { 141 QApplication::installTranslator(translator); 142 if (isRightToLeft(languageCode)) 143 vApp->setLayoutDirection(Qt::RightToLeft); 144 return true; 145 145 } 146 delete translator; 146 147 return false; 147 148 }
