/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you 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 . */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace { void releaseButtonEntry( AquaSalMenu::MenuBarButtonEntry& i_rEntry ) { if( i_rEntry.mpNSImage ) { [i_rEntry.mpNSImage release]; i_rEntry.mpNSImage = nil; } if( i_rEntry.mpToolTipString ) { [i_rEntry.mpToolTipString release]; i_rEntry.mpToolTipString = nil; } } } const AquaSalMenu* AquaSalMenu::pCurrentMenuBar = nullptr; @interface MainMenuSelector : NSObject { } -(void)showDialog: (ShowDialogId)nDialog; -(void)showPreferences: (id)sender; -(void)showAbout: (id)sender; @end @implementation MainMenuSelector -(void)showDialog: (ShowDialogId)nDialog { if( AquaSalMenu::pCurrentMenuBar ) { const AquaSalFrame* pFrame = AquaSalMenu::pCurrentMenuBar->mpFrame; if( pFrame && AquaSalFrame::isAlive( pFrame ) ) { pFrame->CallCallback( SalEvent::ShowDialog, reinterpret_cast(nDialog) ); } } else { OUString aDialog; if( nDialog == ShowDialogId::About ) aDialog = "ABOUT"; else if( nDialog == ShowDialogId::Preferences ) aDialog = "PREFERENCES"; const ApplicationEvent* pAppEvent = new ApplicationEvent( ApplicationEvent::Type::ShowDialog, aDialog); AquaSalInstance::aAppEventList.push_back( pAppEvent ); } } -(void)showPreferences: (id) sender { (void)sender; SolarMutexGuard aGuard; [self showDialog: ShowDialogId::Preferences]; } -(void)showAbout: (id) sender { (void)sender; SolarMutexGuard aGuard; [self showDialog: ShowDialogId::About]; } @end // FIXME: currently this is leaked static MainMenuSelector* pMainMenuSelector = nil; static void initAppMenu() { static bool bInitialized = false; if (bInitialized) return; OSX_SALDATA_RUNINMAIN(initAppMenu()) bInitialized = true; NSMenu* pAppMenu = nil; NSMenuItem* pNewItem = nil; // Related: tdf#126638 use NSMenu subclass to catch and redirect key // shortcuts when a modal window is displayed SalNSMainMenu* pMainMenu = [[[SalNSMainMenu alloc] initWithTitle: @"Main Menu"] autorelease]; pNewItem = [pMainMenu addItemWithTitle: @"Application" action: nil keyEquivalent: @""]; pAppMenu = [[[NSMenu alloc] initWithTitle: @"Application"] autorelease]; [pNewItem setSubmenu: pAppMenu]; [NSApp setMainMenu: pMainMenu]; pMainMenuSelector = [[MainMenuSelector alloc] init]; // about NSString* pString = CreateNSString(VclResId(SV_STDTEXT_ABOUT)); pNewItem = [pAppMenu addItemWithTitle: pString action: @selector(showAbout:) keyEquivalent: @""]; [pString release]; [pNewItem setTarget: pMainMenuSelector]; [pAppMenu addItem:[NSMenuItem separatorItem]]; // preferences pString = CreateNSString(VclResId(SV_STDTEXT_PREFERENCES)); pNewItem = [pAppMenu addItemWithTitle: pString action: @selector(showPreferences:) keyEquivalent: @","]; [pString release]; [pNewItem setKeyEquivalentModifierMask: NSEventModifierFlagCommand]; [pNewItem setTarget: pMainMenuSelector]; [pAppMenu addItem:[NSMenuItem separatorItem]]; // Services item and menu pString = CreateNSString(VclResId(SV_MENU_MAC_SERVICES)); pNewItem = [pAppMenu addItemWithTitle: pString action: nil keyEquivalent: @""]; [pString release]; NSMenu *servicesMenu = [[[NSMenu alloc] initWithTitle:@"Services"] autorelease]; [pNewItem setSubmenu: servicesMenu]; [NSApp setServicesMenu: servicesMenu]; [pAppMenu addItem:[NSMenuItem separatorItem]]; // Hide Application pString = CreateNSString(VclResId(SV_MENU_MAC_HIDEAPP)); [pAppMenu addItemWithTitle: pString action:@selector(hide:) keyEquivalent:@"h"]; [pString release]; // Hide Others pString = CreateNSString(VclResId(SV_MENU_MAC_HIDEALL)); [pAppMenu addItemWithTitle: pString action:@selector(hideOtherApplications:) keyEquivalent:@"h"]; [pString release]; [pNewItem setKeyEquivalentModifierMask: NSEventModifierFlagCommand | NSEventModifierFlagOption]; // Show All pString = CreateNSString(VclResId(SV_MENU_MAC_SHOWALL)); [pAppMenu addItemWithTitle: pString action:@selector(unhideAllApplications:) keyEquivalent:@""]; [pString release]; [pAppMenu addItem:[NSMenuItem separatorItem]]; // Quit pString = CreateNSString(VclResId(SV_MENU_MAC_QUITAPP)); [pAppMenu addItemWithTitle: pString action:@selector(terminate:) keyEquivalent:@"q"]; [pString release]; } std::unique_ptr AquaSalInstance::CreateMenu( bool bMenuBar, Menu* pVCLMenu ) { initAppMenu(); AquaSalMenu *pAquaSalMenu = new AquaSalMenu( bMenuBar ); pAquaSalMenu->mpVCLMenu = pVCLMenu; return std::unique_ptr(pAquaSalMenu); } std::unique_ptr AquaSalInstance::CreateMenuItem( const SalItemParams & rItemData ) { AquaSalMenuItem *pSalMenuItem = new AquaSalMenuItem( &rItemData ); return std::unique_ptr(pSalMenuItem); } /* * AquaSalMenu */ AquaSalMenu::AquaSalMenu( bool bMenuBar ) : mbMenuBar( bMenuBar ), mpMenu( nil ), mpFrame( nullptr ), mpParentSalMenu( nullptr ) { if( ! mbMenuBar ) { mpMenu = [[SalNSMenu alloc] initWithMenu: this]; [mpMenu setDelegate: reinterpret_cast< id >(mpMenu)]; // Related: tdf#126638 enable the menu's "autoenabledItems" property // Enable the menu's "autoenabledItems" property so that // -[SalNSMenuItem validateMenuItem:] will be called before handling // a key shortcut and the menu item can be temporarily disabled if a // modal window is displayed. [mpMenu setAutoenablesItems: YES]; } else { mpMenu = [NSApp mainMenu]; [mpMenu setAutoenablesItems: NO]; } } AquaSalMenu::~AquaSalMenu() { // actually someone should have done AquaSalFrame::SetMenu( NULL ) // on our frame, alas it is not so if( mpFrame && AquaSalFrame::isAlive( mpFrame ) && mpFrame->mpMenu == this ) const_cast(mpFrame)->mpMenu = nullptr; // this should normally be empty already, but be careful... for( size_t i = 0; i < maButtons.size(); i++ ) releaseButtonEntry( maButtons[i] ); maButtons.clear(); // is this leaking in some cases ? the release often leads to a duplicate release // it seems the parent item gets ownership of the menu if( mpMenu ) { if( mbMenuBar ) { if( pCurrentMenuBar == this ) { // if the current menubar gets destroyed, set the default menubar setDefaultMenu(); } } else // the system may still hold a reference on mpMenu { // so set the pointer to this AquaSalMenu to NULL // to protect from calling a dead object // in ! mbMenuBar case our mpMenu is actually a SalNSMenu* // so we can safely cast here [static_cast(mpMenu) setSalMenu: nullptr]; /* #i89860# FIXME: using [autorelease] here (and in AquaSalMenuItem::~AquaSalMenuItem) instead of [release] fixes an occasional crash. That should indicate that we release menus / menu items in the wrong order somewhere, but I could not find that case. */ [mpMenu autorelease]; } } } bool AquaSalMenu::ShowNativePopupMenu(FloatingWindow * pWin, const tools::Rectangle& rRect, FloatWinPopupFlags nFlags) { // set offsets for positioning const float offset = 9.0; // get the pointers AquaSalFrame * pParentAquaSalFrame = static_cast(pWin->ImplGetWindowImpl()->mpRealParent->ImplGetFrame()); NSWindow* pParentNSWindow = pParentAquaSalFrame->mpNSWindow; NSView* pParentNSView = [pParentNSWindow contentView]; NSView* pPopupNSView = static_cast(pWin->ImplGetWindow()->ImplGetFrame())->mpNSView; NSRect popupFrame = [pPopupNSView frame]; // create frame rect NSRect displayPopupFrame = NSMakeRect( rRect.Left()+(offset-1), rRect.Top()+(offset+1), popupFrame.size.width, 0 ); pParentAquaSalFrame->VCLToCocoa(displayPopupFrame, false); // do the same strange semantics as vcl popup windows to arrive at a frame geometry // in mirrored UI case; best done by actually executing the same code sal_uInt16 nArrangeIndex; pWin->SetPosPixel( FloatingWindow::ImplCalcPos( pWin, rRect, nFlags, nArrangeIndex ) ); displayPopupFrame.origin.x = pWin->ImplGetFrame()->GetUnmirroredGeometry().x() - pParentAquaSalFrame->GetUnmirroredGeometry().x() + offset; displayPopupFrame.origin.y = pWin->ImplGetFrame()->GetUnmirroredGeometry().y() - pParentAquaSalFrame->GetUnmirroredGeometry().y() + offset; pParentAquaSalFrame->VCLToCocoa(displayPopupFrame, false); // #i111992# if this menu was opened due to a key event, prevent dispatching that yet again if( [pParentNSView respondsToSelector: @selector(clearLastEvent)] ) [pParentNSView performSelector:@selector(clearLastEvent)]; // open popup menu NSPopUpButtonCell * pPopUpButtonCell = [[NSPopUpButtonCell alloc] initTextCell:@"" pullsDown:NO]; [pPopUpButtonCell setMenu: mpMenu]; [pPopUpButtonCell selectItem:nil]; [AquaA11yWrapper setPopupMenuOpen: YES]; [pPopUpButtonCell performClickWithFrame:displayPopupFrame inView:pParentNSView]; [pPopUpButtonCell release]; [AquaA11yWrapper setPopupMenuOpen: NO]; return true; } int AquaSalMenu::getItemIndexByPos( sal_uInt16 nPos ) const { int nIndex = 0; if( nPos == MENU_APPEND ) nIndex = [mpMenu numberOfItems]; else nIndex = sal::static_int_cast( mbMenuBar ? nPos+1 : nPos ); return nIndex; } const AquaSalFrame* AquaSalMenu::getFrame() const { const AquaSalMenu* pMenu = this; while( pMenu && ! pMenu->mpFrame ) pMenu = pMenu->mpParentSalMenu; return pMenu ? pMenu->mpFrame : nullptr; } void AquaSalMenu::unsetMainMenu() { pCurrentMenuBar = nullptr; // remove items from main menu NSMenu* pMenu = [NSApp mainMenu]; for( int nItems = [pMenu numberOfItems]; nItems > 1; nItems-- ) [pMenu removeItemAtIndex: 1]; } void AquaSalMenu::setMainMenu() { SAL_WARN_IF( !mbMenuBar, "vcl", "setMainMenu on non menubar" ); if( mbMenuBar ) { if( pCurrentMenuBar != this ) { unsetMainMenu(); // insert our items for( std::vector::size_type i = 0; i < maItems.size(); i++ ) { NSMenuItem* pItem = maItems[i]->mpMenuItem; [mpMenu insertItem: pItem atIndex: i+1]; } pCurrentMenuBar = this; // change status item statusLayout(); } enableMainMenu( true ); } } void AquaSalMenu::setDefaultMenu() { // tdf#160427 native menu changes can only be done on the main thread OSX_SALDATA_RUNINMAIN(AquaSalMenu::setDefaultMenu()) NSMenu* pMenu = [NSApp mainMenu]; unsetMainMenu(); // insert default items std::vector< NSMenuItem* >& rFallbackMenu( GetSalData()->maFallbackMenu ); for( unsigned int i = 0, nAddItems = rFallbackMenu.size(); i < nAddItems; i++ ) { NSMenuItem* pItem = rFallbackMenu[i]; if( [pItem menu] == nil ) [pMenu insertItem: pItem atIndex: i+1]; } } void AquaSalMenu::enableMainMenu( bool bEnable ) { NSMenu* pMainMenu = [NSApp mainMenu]; if( pMainMenu ) { // enable/disable items from main menu int nItems = [pMainMenu numberOfItems]; for( int n = 1; n < nItems; n++ ) { NSMenuItem* pItem = [pMainMenu itemAtIndex: n]; if( [pItem isKindOfClass: [SalNSMenuItem class]]) [static_cast(pItem) setReallyEnabled: bEnable]; else [pItem setEnabled: bEnable]; } } } void AquaSalMenu::addFallbackMenuItem( NSMenuItem* pNewItem ) { initAppMenu(); std::vector< NSMenuItem* >& rFallbackMenu( GetSalData()->maFallbackMenu ); // prevent duplicate insertion int nItems = rFallbackMenu.size(); for( int i = 0; i < nItems; i++ ) { if( rFallbackMenu[i] == pNewItem ) return; } // push the item to the back and retain it [pNewItem retain]; rFallbackMenu.push_back( pNewItem ); if( pCurrentMenuBar == nullptr ) setDefaultMenu(); } void AquaSalMenu::removeFallbackMenuItem( NSMenuItem* pOldItem ) { std::vector< NSMenuItem* >& rFallbackMenu( GetSalData()->maFallbackMenu ); // find item unsigned int nItems = rFallbackMenu.size(); for( unsigned int i = 0; i < nItems; i++ ) { if( rFallbackMenu[i] == pOldItem ) { // remove item and release rFallbackMenu.erase( rFallbackMenu.begin() + i ); [pOldItem release]; if( pCurrentMenuBar == nullptr ) setDefaultMenu(); return; } } } bool AquaSalMenu::VisibleMenuBar() { return true; } void AquaSalMenu::SetFrame( const SalFrame *pFrame ) { mpFrame = static_cast(pFrame); } void AquaSalMenu::InsertItem( SalMenuItem* pSalMenuItem, unsigned nPos ) { OSX_SALDATA_RUNINMAIN(InsertItem(pSalMenuItem, nPos)) AquaSalMenuItem *pAquaSalMenuItem = static_cast(pSalMenuItem); pAquaSalMenuItem->mpParentMenu = this; DBG_ASSERT( pAquaSalMenuItem->mpVCLMenu == nullptr || pAquaSalMenuItem->mpVCLMenu == mpVCLMenu || mpVCLMenu == nullptr, "resetting menu ?" ); if( pAquaSalMenuItem->mpVCLMenu ) mpVCLMenu = pAquaSalMenuItem->mpVCLMenu; if( nPos == MENU_APPEND || nPos == maItems.size() ) maItems.push_back( pAquaSalMenuItem ); else if( nPos < maItems.size() ) maItems.insert( maItems.begin() + nPos, pAquaSalMenuItem ); else { OSL_FAIL( "invalid item index in insert" ); return; } if( ! mbMenuBar || pCurrentMenuBar == this ) [mpMenu insertItem: pAquaSalMenuItem->mpMenuItem atIndex: getItemIndexByPos(nPos)]; } void AquaSalMenu::RemoveItem( unsigned nPos ) { // tdf#160427 native menu changes can only be done on the main thread OSX_SALDATA_RUNINMAIN(RemoveItem(nPos)) AquaSalMenuItem* pRemoveItem = nullptr; if( nPos == MENU_APPEND || nPos == (maItems.size()-1) ) { pRemoveItem = maItems.back(); maItems.pop_back(); } else if( nPos < maItems.size() ) { pRemoveItem = maItems[ nPos ]; maItems.erase( maItems.begin()+nPos ); } else { OSL_FAIL( "invalid item index in remove" ); return; } pRemoveItem->mpParentMenu = nullptr; if( ! mbMenuBar || pCurrentMenuBar == this ) [mpMenu removeItemAtIndex: getItemIndexByPos(nPos)]; } void AquaSalMenu::SetSubMenu( SalMenuItem* pSalMenuItem, SalMenu* pSubMenu, unsigned /*nPos*/ ) { AquaSalMenuItem *pAquaSalMenuItem = static_cast(pSalMenuItem); AquaSalMenu *subAquaSalMenu = static_cast(pSubMenu); if (subAquaSalMenu) { pAquaSalMenuItem->mpSubMenu = subAquaSalMenu; if( subAquaSalMenu->mpParentSalMenu == nullptr ) { subAquaSalMenu->mpParentSalMenu = this; [pAquaSalMenuItem->mpMenuItem setSubmenu: subAquaSalMenu->mpMenu]; // set title of submenu [subAquaSalMenu->mpMenu setTitle: [pAquaSalMenuItem->mpMenuItem title]]; } else if( subAquaSalMenu->mpParentSalMenu != this ) { // cocoa doesn't allow menus to be submenus of multiple // menu items, so place a copy in the menu item instead ? // let's hope that NSMenu copy does the right thing NSMenu* pCopy = [subAquaSalMenu->mpMenu copy]; [pAquaSalMenuItem->mpMenuItem setSubmenu: pCopy]; // set title of submenu [pCopy setTitle: [pAquaSalMenuItem->mpMenuItem title]]; } } else { if( pAquaSalMenuItem->mpSubMenu ) { if( pAquaSalMenuItem->mpSubMenu->mpParentSalMenu == this ) pAquaSalMenuItem->mpSubMenu->mpParentSalMenu = nullptr; } pAquaSalMenuItem->mpSubMenu = nullptr; [pAquaSalMenuItem->mpMenuItem setSubmenu: nil]; } } void AquaSalMenu::CheckItem( unsigned nPos, bool bCheck ) { if( nPos < maItems.size() ) { NSMenuItem* pItem = maItems[nPos]->mpMenuItem; [pItem setState: bCheck ? NSControlStateValueOn : NSControlStateValueOff]; } } void AquaSalMenu::EnableItem( unsigned nPos, bool bEnable ) { if( nPos < maItems.size() ) { NSMenuItem* pItem = maItems[nPos]->mpMenuItem; if( [pItem isKindOfClass: [SalNSMenuItem class]]) [static_cast(pItem) setReallyEnabled: bEnable]; else [pItem setEnabled: bEnable]; } } void AquaSalMenu::SetItemImage( unsigned /*nPos*/, SalMenuItem* pSMI, const Image& rImage ) { AquaSalMenuItem* pSalMenuItem = static_cast( pSMI ); if( ! pSalMenuItem || ! pSalMenuItem->mpMenuItem ) return; NSImage* pImage = CreateNSImage( rImage ); [pSalMenuItem->mpMenuItem setImage: pImage]; if( pImage ) [pImage release]; } void AquaSalMenu::SetItemText( unsigned /*i_nPos*/, SalMenuItem* i_pSalMenuItem, const OUString& i_rText ) { if (!i_pSalMenuItem) return; AquaSalMenuItem *pAquaSalMenuItem = static_cast(i_pSalMenuItem); // Delete all mnemonics of mbMenuBar and CJK-style mnemonic OUString aText = MnemonicGenerator::EraseAllMnemonicChars(i_rText); if (aText.endsWith("...", &aText)) aText += u"\u2026"; NSString* pString = CreateNSString( aText ); if (pString) { [pAquaSalMenuItem->mpMenuItem setTitle: pString]; // if the menu item has a submenu, change its title as well if (pAquaSalMenuItem->mpSubMenu) [pAquaSalMenuItem->mpSubMenu->mpMenu setTitle: pString]; [pString release]; } } void AquaSalMenu::SetAccelerator( unsigned /*nPos*/, SalMenuItem* pSalMenuItem, const vcl::KeyCode& rKeyCode, const OUString& /*rKeyName*/ ) { sal_uInt16 nModifier; sal_Unicode nCommandKey = 0; sal_uInt16 nKeyCode=rKeyCode.GetCode(); if( nKeyCode ) { if ((nKeyCode>=KEY_A) && (nKeyCode<=KEY_Z)) // letter A..Z nCommandKey = nKeyCode-KEY_A + 'a'; else if ((nKeyCode>=KEY_0) && (nKeyCode<=KEY_9)) // numbers 0..9 nCommandKey = nKeyCode-KEY_0 + '0'; else if ((nKeyCode>=KEY_F1) && (nKeyCode<=KEY_F26)) // function keys F1..F26 nCommandKey = nKeyCode-KEY_F1 + NSF1FunctionKey; else if( nKeyCode == KEY_REPEAT ) nCommandKey = NSRedoFunctionKey; else if( nKeyCode == KEY_SPACE ) nCommandKey = ' '; else { switch (nKeyCode) { case KEY_ADD: nCommandKey='+'; break; case KEY_SUBTRACT: nCommandKey='-'; break; case KEY_MULTIPLY: nCommandKey='*'; break; case KEY_DIVIDE: nCommandKey='/'; break; case KEY_POINT: nCommandKey='.'; break; case KEY_LESS: nCommandKey='<'; break; case KEY_GREATER: nCommandKey='>'; break; case KEY_EQUAL: nCommandKey='='; break; case KEY_COLON: nCommandKey=':'; break; case KEY_NUMBERSIGN: nCommandKey='#'; break; case KEY_SEMICOLON: nCommandKey=';'; break; case KEY_BACKSPACE: nCommandKey=u'\x232b'; break; case KEY_PAGEUP: nCommandKey=u'\x21de'; break; case KEY_PAGEDOWN: nCommandKey=u'\x21df'; break; case KEY_UP: nCommandKey=u'\x21e1'; break; case KEY_DOWN: nCommandKey=u'\x21e3'; break; case KEY_RETURN: nCommandKey=u'\x21a9'; break; case KEY_BRACKETLEFT: nCommandKey='['; break; case KEY_BRACKETRIGHT: nCommandKey=']'; break; } } } else // not even a code ? nonsense -> ignore return; SAL_WARN_IF( !nCommandKey, "vcl", "unmapped accelerator key" ); nModifier=rKeyCode.GetModifier(); // should always use the command key int nItemModifier = 0; if (nModifier & KEY_SHIFT) { nItemModifier |= NSEventModifierFlagShift; // actually useful only for function keys if( nKeyCode >= KEY_A && nKeyCode <= KEY_Z ) nCommandKey = nKeyCode - KEY_A + 'A'; } if (nModifier & KEY_MOD1) nItemModifier |= NSEventModifierFlagCommand; if(nModifier & KEY_MOD2) nItemModifier |= NSEventModifierFlagOption; if(nModifier & KEY_MOD3) nItemModifier |= NSEventModifierFlagControl; AquaSalMenuItem *pAquaSalMenuItem = static_cast(pSalMenuItem); NSString* pString = CreateNSString( OUString( &nCommandKey, 1 ) ); [pAquaSalMenuItem->mpMenuItem setKeyEquivalent: pString]; [pAquaSalMenuItem->mpMenuItem setKeyEquivalentModifierMask: nItemModifier]; if (pString) [pString release]; } void AquaSalMenu::GetSystemMenuData( SystemMenuData* ) { } AquaSalMenu::MenuBarButtonEntry* AquaSalMenu::findButtonItem( sal_uInt16 i_nItemId ) { for( size_t i = 0; i < maButtons.size(); ++i ) { if( maButtons[i].maButton.mnId == i_nItemId ) return &maButtons[i]; } return nullptr; } void AquaSalMenu::statusLayout() { if( GetSalData()->mpStatusItem ) { SAL_WNODEPRECATED_DECLARATIONS_PUSH // "'view' is deprecated: first deprecated in macOS 10.14 - Use the standard button // property instead" NSView* pNSView = [GetSalData()->mpStatusItem view]; SAL_WNODEPRECATED_DECLARATIONS_POP if( [pNSView isMemberOfClass: [OOStatusItemView class]] ) // well of course it is [static_cast(pNSView) layout]; else OSL_FAIL( "someone stole our status view" ); } } bool AquaSalMenu::AddMenuBarButton( const SalMenuButtonItem& i_rNewItem ) { if( ! mbMenuBar ) return false; MenuBarButtonEntry* pEntry = findButtonItem( i_rNewItem.mnId ); if( pEntry ) { releaseButtonEntry( *pEntry ); pEntry->maButton = i_rNewItem; pEntry->mpNSImage = CreateNSImage( i_rNewItem.maImage ); if( i_rNewItem.maToolTipText.getLength() ) pEntry->mpToolTipString = CreateNSString( i_rNewItem.maToolTipText ); } else { maButtons.push_back( MenuBarButtonEntry( i_rNewItem ) ); maButtons.back().mpNSImage = CreateNSImage( i_rNewItem.maImage ); maButtons.back().mpToolTipString = CreateNSString( i_rNewItem.maToolTipText ); } // lazy create status item SalData::getStatusItem(); if( pCurrentMenuBar == this ) statusLayout(); return true; } void AquaSalMenu::RemoveMenuBarButton( sal_uInt16 i_nId ) { MenuBarButtonEntry* pEntry = findButtonItem( i_nId ); if( pEntry ) { releaseButtonEntry( *pEntry ); // note: vector guarantees that its contents are in a plain array maButtons.erase( maButtons.begin() + (pEntry - maButtons.data()) ); } if( pCurrentMenuBar == this ) statusLayout(); } tools::Rectangle AquaSalMenu::GetMenuBarButtonRectPixel( sal_uInt16 i_nItemId, SalFrame* i_pReferenceFrame ) { if( ! i_pReferenceFrame || ! AquaSalFrame::isAlive( static_cast(i_pReferenceFrame) ) ) return tools::Rectangle(); MenuBarButtonEntry* pEntry = findButtonItem( i_nItemId ); if( ! pEntry ) return tools::Rectangle(); NSStatusItem* pItem = SalData::getStatusItem(); if( ! pItem ) return tools::Rectangle(); SAL_WNODEPRECATED_DECLARATIONS_PUSH // "'view' is deprecated: first deprecated in macOS 10.14 - Use the standard button property // instead" NSView* pNSView = [pItem view]; SAL_WNODEPRECATED_DECLARATIONS_POP if( ! pNSView ) return tools::Rectangle(); NSWindow* pNSWin = [pNSView window]; if( ! pNSWin ) return tools::Rectangle(); NSRect aRect = [pNSWin convertRectToScreen:[pNSWin frame]]; // make coordinates relative to reference frame static_cast(i_pReferenceFrame)->CocoaToVCL( aRect.origin ); aRect.origin.x -= i_pReferenceFrame->GetUnmirroredGeometry().x(); aRect.origin.y -= i_pReferenceFrame->GetUnmirroredGeometry().y() + aRect.size.height; return tools::Rectangle( Point(static_cast(aRect.origin.x), static_cast(aRect.origin.y) ), Size( static_cast(aRect.size.width), static_cast(aRect.size.height) ) ); } /* * SalMenuItem */ AquaSalMenuItem::AquaSalMenuItem( const SalItemParams* pItemData ) : mnId( pItemData->nId ), mpVCLMenu( pItemData->pMenu ), mpParentMenu( nullptr ), mpSubMenu( nullptr ), mpMenuItem( nil ) { if (pItemData->eType == MenuItemType::SEPARATOR) { mpMenuItem = [NSMenuItem separatorItem]; // these can go occasionally go in and out of a menu, ensure their lifecycle // also for the release in AquaSalMenuItem destructor [mpMenuItem retain]; } else { mpMenuItem = [[SalNSMenuItem alloc] initWithMenuItem: this]; [static_cast(mpMenuItem) setReallyEnabled: YES]; // peel mnemonics because on mac there are no such things for menu items // Delete CJK-style mnemonics for the dropdown menu of the 'New button' and lower menu of 'File > New' NSString* pString = CreateNSString(MnemonicGenerator::EraseAllMnemonicChars(pItemData->aText)); if (pString) { [mpMenuItem setTitle: pString]; [pString release]; } // anything but a separator should set a menu to dispatch to SAL_WARN_IF( !mpVCLMenu, "vcl", "no menu" ); } } AquaSalMenuItem::~AquaSalMenuItem() { /* #i89860# FIXME: using [autorelease] here (and in AquaSalMenu:::~AquaSalMenu) instead of [release] fixes an occasional crash. That should indicate that we release menus / menu items in the wrong order somewhere, but I could not find that case. */ if( mpMenuItem ) [mpMenuItem autorelease]; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ h'>
-rw-r--r--source/am/helpcontent2/source/text/shared/guide.po14
-rw-r--r--source/am/helpcontent2/source/text/shared/optionen.po8
-rw-r--r--source/am/helpcontent2/source/text/simpress/01.po22
-rw-r--r--source/am/helpcontent2/source/text/simpress/guide.po14
-rw-r--r--source/am/helpcontent2/source/text/swriter/01.po8
-rw-r--r--source/am/helpcontent2/source/text/swriter/librelogo.po6
-rw-r--r--source/cs/filter/source/config/fragments/filters.po6
-rw-r--r--source/cs/helpcontent2/source/text/scalc.po6
-rw-r--r--source/cs/helpcontent2/source/text/scalc/01.po26
-rw-r--r--source/cs/helpcontent2/source/text/scalc/02.po20
-rw-r--r--source/cs/helpcontent2/source/text/scalc/guide.po30
-rw-r--r--source/cs/helpcontent2/source/text/shared/01.po15
-rw-r--r--source/cs/helpcontent2/source/text/shared/guide.po6
-rw-r--r--source/cs/helpcontent2/source/text/shared/optionen.po8
-rw-r--r--source/cs/helpcontent2/source/text/simpress/01.po6
-rw-r--r--source/cs/helpcontent2/source/text/simpress/guide.po10
-rw-r--r--source/cs/helpcontent2/source/text/swriter/01.po8
-rw-r--r--source/cs/helpcontent2/source/text/swriter/02.po6
-rw-r--r--source/cs/officecfg/registry/data/org/openoffice/Office/UI.po12
-rw-r--r--source/cs/sc/uiconfig/scalc/ui.po92
-rw-r--r--source/cs/scp2/source/calc.po12
-rw-r--r--source/cs/scp2/source/draw.po12
-rw-r--r--source/cs/scp2/source/math.po12
-rw-r--r--source/cs/scp2/source/ooo.po10
-rw-r--r--source/cs/scp2/source/writer.po12
-rw-r--r--source/cs/sd/source/ui/animations.po16
-rw-r--r--source/cs/sd/source/ui/annotations.po35
-rw-r--r--source/cs/sfx2/uiconfig/ui.po7
-rw-r--r--source/cs/vcl/source/src.po14
-rw-r--r--source/cs/wizards/source/template.po14
-rw-r--r--source/de/officecfg/registry/data/org/openoffice/Office/UI.po436
-rw-r--r--source/eo/helpcontent2/source/text/swriter/00.po47
-rw-r--r--source/eo/helpcontent2/source/text/swriter/01.po297
-rw-r--r--source/eo/helpcontent2/source/text/swriter/02.po19
-rw-r--r--source/eo/helpcontent2/source/text/swriter/04.po6
-rw-r--r--source/es/helpcontent2/source/text/scalc/01.po63
-rw-r--r--source/es/helpcontent2/source/text/shared/01.po8
-rw-r--r--source/es/helpcontent2/source/text/shared/guide.po12
-rw-r--r--source/es/helpcontent2/source/text/shared/optionen.po6
-rw-r--r--source/es/helpcontent2/source/text/simpress/01.po8
-rw-r--r--source/es/helpcontent2/source/text/smath/01.po6
-rw-r--r--source/es/scaddins/source/analysis.po12
-rw-r--r--source/es/uui/source.po10
-rw-r--r--source/es/vcl/source/src.po8
-rw-r--r--source/eu/basctl/uiconfig/basicide/ui.po8
-rw-r--r--source/eu/basic/source/classes.po97
-rw-r--r--source/eu/chart2/uiconfig/ui.po90
-rw-r--r--source/eu/cui/source/dialogs.po6
-rw-r--r--source/eu/cui/source/tabpages.po7
-rw-r--r--source/eu/cui/uiconfig/ui.po99
-rw-r--r--source/eu/dbaccess/source/ui/dlg.po8
-rw-r--r--source/eu/dbaccess/uiconfig/ui.po233
-rw-r--r--source/eu/desktop/uiconfig/ui.po9
-rw-r--r--source/eu/dictionaries/is.po8
-rw-r--r--source/eu/dictionaries/sv_SE.po9
-rw-r--r--source/eu/editeng/source/editeng.po13
-rw-r--r--source/eu/extensions/source/scanner.po16
-rw-r--r--source/eu/extensions/uiconfig/sabpilot/ui.po9
-rw-r--r--source/eu/extras/source/autocorr/emoji.po1925
-rw-r--r--source/eu/filter/source/config/fragments/filters.po80
-rw-r--r--source/eu/filter/source/config/fragments/types.po34
-rw-r--r--source/eu/filter/uiconfig/ui.po15
-rw-r--r--source/eu/formula/source/core/resource.po8
-rw-r--r--source/eu/fpicker/source/office.po10
-rw-r--r--source/eu/fpicker/uiconfig/ui.po25
-rw-r--r--source/eu/framework/source/classes.po10
-rw-r--r--source/eu/helpcontent2/source/auxiliary.po14
-rw-r--r--source/eu/helpcontent2/source/text/sbasic/shared.po47
-rw-r--r--source/eu/helpcontent2/source/text/scalc.po8
-rw-r--r--source/eu/helpcontent2/source/text/scalc/00.po22
-rw-r--r--source/eu/helpcontent2/source/text/scalc/01.po160
-rw-r--r--source/eu/helpcontent2/source/text/scalc/02.po13
-rw-r--r--source/eu/helpcontent2/source/text/scalc/04.po16
-rw-r--r--source/eu/helpcontent2/source/text/scalc/05.po10
-rw-r--r--source/eu/helpcontent2/source/text/scalc/guide.po131
-rw-r--r--source/eu/helpcontent2/source/text/schart/01.po40
-rw-r--r--source/eu/helpcontent2/source/text/sdraw/guide.po12
-rw-r--r--source/eu/helpcontent2/source/text/shared/00.po114
-rw-r--r--source/eu/helpcontent2/source/text/shared/01.po145
-rw-r--r--source/eu/helpcontent2/source/text/shared/02.po22
-rw-r--r--source/eu/helpcontent2/source/text/shared/04.po127
-rw-r--r--source/eu/helpcontent2/source/text/shared/autopi.po32
-rw-r--r--source/eu/helpcontent2/source/text/shared/guide.po27
-rw-r--r--source/eu/helpcontent2/source/text/shared/optionen.po38
-rw-r--r--source/eu/helpcontent2/source/text/simpress/01.po9
-rw-r--r--source/eu/helpcontent2/source/text/simpress/02.po35
-rw-r--r--source/eu/helpcontent2/source/text/simpress/04.po75
-rw-r--r--source/eu/helpcontent2/source/text/smath/01.po10
-rw-r--r--source/eu/helpcontent2/source/text/swriter/00.po10
-rw-r--r--source/eu/helpcontent2/source/text/swriter/01.po21
-rw-r--r--source/eu/helpcontent2/source/text/swriter/04.po14
-rw-r--r--source/eu/helpcontent2/source/text/swriter/guide.po31
-rw-r--r--source/eu/officecfg/registry/data/org/openoffice/Office.po33
-rw-r--r--source/eu/officecfg/registry/data/org/openoffice/Office/UI.po721
-rw-r--r--source/eu/readlicense_oo/docs.po7
-rw-r--r--source/eu/sc/source/ui/StatisticsDialogs.po24
-rw-r--r--source/eu/sc/source/ui/cctrl.po9
-rw-r--r--source/eu/sc/source/ui/drawfunc.po9
-rw-r--r--source/eu/sc/source/ui/sidebar.po12
-rw-r--r--source/eu/sc/source/ui/src.po187
-rw-r--r--source/eu/sc/uiconfig/scalc/ui.po96
-rw-r--r--source/eu/scaddins/source/analysis.po22
-rw-r--r--source/eu/scp2/source/accessories.po12
-rw-r--r--source/eu/scp2/source/ooo.po21
-rw-r--r--source/eu/sd/source/ui/animations.po9
-rw-r--r--source/eu/sd/source/ui/app.po70
-rw-r--r--source/eu/sd/source/ui/view.po8
-rw-r--r--source/eu/sd/uiconfig/sdraw/ui.po8
-rw-r--r--source/eu/sd/uiconfig/simpress/ui.po77
-rw-r--r--source/eu/sfx2/source/appl.po12
-rw-r--r--source/eu/sfx2/source/sidebar.po8
-rw-r--r--source/eu/sfx2/uiconfig/ui.po48
-rw-r--r--source/eu/starmath/uiconfig/smath/ui.po8
-rw-r--r--source/eu/svtools/source/contnr.po10
-rw-r--r--source/eu/svtools/source/control.po8
-rw-r--r--source/eu/svtools/source/dialogs.po8
-rw-r--r--source/eu/svtools/source/misc.po34
-rw-r--r--source/eu/svtools/uiconfig/ui.po63
-rw-r--r--source/eu/svx/inc.po14
-rw-r--r--source/eu/svx/source/dialog.po97
-rw-r--r--source/eu/svx/source/items.po14
-rw-r--r--source/eu/svx/source/stbctrls.po28
-rw-r--r--source/eu/svx/source/svdraw.po14
-rw-r--r--source/eu/svx/source/tbxctrls.po10
-rw-r--r--source/eu/svx/uiconfig/ui.po300
-rw-r--r--source/eu/sw/source/ui/app.po90
-rw-r--r--source/eu/sw/source/ui/dochdl.po10
-rw-r--r--source/eu/sw/source/ui/misc.po10
-rw-r--r--source/eu/sw/source/uibase/lingu.po9
-rw-r--r--source/eu/sw/source/uibase/utlui.po50
-rw-r--r--source/eu/sw/uiconfig/swriter/ui.po93
-rw-r--r--source/eu/uui/source.po17
-rw-r--r--source/eu/uui/uiconfig/ui.po33
-rw-r--r--source/eu/vcl/source/src.po16
-rw-r--r--source/eu/wizards/source/formwizard.po9
-rw-r--r--source/gl/sd/uiconfig/simpress/ui.po6
-rw-r--r--source/it/helpcontent2/source/text/sbasic/shared.po10
-rw-r--r--source/it/helpcontent2/source/text/scalc/01.po50
-rw-r--r--source/it/helpcontent2/source/text/scalc/guide.po12
-rw-r--r--source/it/helpcontent2/source/text/schart.po10
-rw-r--r--source/it/helpcontent2/source/text/schart/01.po158
-rw-r--r--source/it/helpcontent2/source/text/shared.po42
-rw-r--r--source/it/helpcontent2/source/text/shared/00.po26
-rw-r--r--source/it/helpcontent2/source/text/shared/01.po214
-rw-r--r--source/it/helpcontent2/source/text/simpress/01.po22
-rw-r--r--source/ja/sw/uiconfig/swriter/ui.po10
-rw-r--r--source/nl/helpcontent2/source/text/shared/01.po9
-rw-r--r--source/nn/helpcontent2/source/text/shared/01.po8
-rw-r--r--source/sk/officecfg/registry/data/org/openoffice/Office/UI.po5
-rw-r--r--source/sk/sc/source/ui/StatisticsDialogs.po22
-rw-r--r--source/sk/sc/source/ui/src.po32
-rw-r--r--source/sk/sc/uiconfig/scalc/ui.po35
-rw-r--r--source/sk/scaddins/source/analysis.po20
-rw-r--r--source/sk/sfx2/uiconfig/ui.po19
-rw-r--r--source/sk/svx/source/svdraw.po8
-rw-r--r--source/sk/svx/source/tbxctrls.po8
-rw-r--r--source/sk/svx/uiconfig/ui.po42
-rw-r--r--source/sk/sw/source/ui/app.po18
-rw-r--r--source/sk/sw/source/ui/dochdl.po8
-rw-r--r--source/sk/sw/source/uibase/lingu.po7
-rw-r--r--source/sk/sw/source/uibase/utlui.po48
-rw-r--r--source/sk/sw/uiconfig/swriter/ui.po46
-rw-r--r--source/sv/helpcontent2/source/text/shared/00.po95
-rw-r--r--source/uk/cui/uiconfig/ui.po10
-rw-r--r--source/uk/helpcontent2/source/text/scalc.po8
-rw-r--r--source/uk/helpcontent2/source/text/scalc/01.po28
-rw-r--r--source/uk/helpcontent2/source/text/swriter/guide.po82
-rw-r--r--source/uk/officecfg/registry/data/org/openoffice/Office/UI.po6
-rw-r--r--source/uk/sd/source/ui/app.po8
-rw-r--r--source/uk/svx/source/dialog.po14
-rw-r--r--source/uk/svx/source/svdraw.po40
-rw-r--r--source/uk/svx/uiconfig/ui.po8
-rw-r--r--source/uk/sw/source/ui/utlui.po4
-rw-r--r--source/uk/sw/source/uibase/docvw.po16
-rw-r--r--source/uk/sw/uiconfig/swriter/ui.po8
-rw-r--r--source/uk/uui/source.po6
-rw-r--r--source/zh-CN/helpcontent2/source/auxiliary.po80
-rw-r--r--source/zh-CN/helpcontent2/source/text/scalc.po103
-rw-r--r--source/zh-CN/helpcontent2/source/text/scalc/01.po99
-rw-r--r--source/zh-CN/helpcontent2/source/text/schart.po9
-rw-r--r--source/zh-CN/helpcontent2/source/text/sdraw.po11
-rw-r--r--source/zh-CN/helpcontent2/source/text/shared.po8
-rw-r--r--source/zh-CN/helpcontent2/source/text/shared/01.po8
-rw-r--r--source/zh-CN/helpcontent2/source/text/shared/guide.po40
-rw-r--r--source/zh-CN/helpcontent2/source/text/shared/optionen.po82
-rw-r--r--source/zh-CN/helpcontent2/source/text/smath.po13
-rw-r--r--source/zh-CN/helpcontent2/source/text/swriter.po9
-rw-r--r--source/zh-TW/svx/uiconfig/ui.po9
199 files changed, 4522 insertions, 5612 deletions
diff --git a/source/af/chart2/source/controller/dialogs.po b/source/af/chart2/source/controller/dialogs.po
index f73d3711b06..86e4c426f54 100644
--- a/source/af/chart2/source/controller/dialogs.po
+++ b/source/af/chart2/source/controller/dialogs.po
@@ -3,18 +3,18 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.libreoffice.org/enter_bug.cgi?product=LibreOffice&bug_status=UNCONFIRMED&component=UI\n"
-"POT-Creation-Date: 2014-05-02 00:01+0200\n"
-"PO-Revision-Date: 2012-11-13 20:14+0000\n"
-"Last-Translator: dwayne <dwayne@translate.org.za>\n"
+"POT-Creation-Date: 2015-04-22 23:40+0200\n"
+"PO-Revision-Date: 2016-02-25 12:38+0000\n"
+"Last-Translator: Noel Grandin <noelgrandin@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: af\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: LibreOffice\n"
+"X-Generator: Pootle 2.7\n"
"X-Accelerator-Marker: ~\n"
-"X-POOTLE-MTIME: 1352837663.0\n"
+"X-POOTLE-MTIME: 1456403897.000000\n"
#: Strings.src
msgctxt ""
@@ -812,13 +812,12 @@ msgid "This function cannot be completed with the selected objects."
msgstr "Hierdie funksie kan nie met die betrokke objekte voltooi word nie."
#: Strings.src
-#, fuzzy
msgctxt ""
"Strings.src\n"
"STR_ACTION_EDIT_TEXT\n"
"string.text"
msgid "Edit text"
-msgstr "Redigeer teks van %1"
+msgstr "Redigeer teks"
#: Strings.src
msgctxt ""
diff --git a/source/af/cui/source/options.po b/source/af/cui/source/options.po
index f1212eaec1c..03455d3a8a4 100644
--- a/source/af/cui/source/options.po
+++ b/source/af/cui/source/options.po
@@ -4,8 +4,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.libreoffice.org/enter_bug.cgi?product=LibreOffice&bug_status=UNCONFIRMED&component=UI\n"
"POT-Creation-Date: 2015-11-10 19:33+0100\n"
-"PO-Revision-Date: 2015-05-11 19:39+0000\n"
-"Last-Translator: system user <>\n"
+"PO-Revision-Date: 2016-02-25 12:38+0000\n"
+"Last-Translator: Noel Grandin <noelgrandin@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: af\n"
"MIME-Version: 1.0\n"
@@ -14,7 +14,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Pootle 2.7\n"
"X-Accelerator-Marker: ~\n"
-"X-POOTLE-MTIME: 1431373145.000000\n"
+"X-POOTLE-MTIME: 1456403936.000000\n"
#: connpooloptions.src
msgctxt ""
@@ -1011,7 +1011,7 @@ msgctxt ""
"Basic Fonts (CTL)\n"
"itemlist.text"
msgid "Basic Fonts (CTL)"
-msgstr "Basiese lettertipes (%1)"
+msgstr "Basiese lettertipes (CTL)"
#: treeopt.src
msgctxt ""
diff --git a/source/af/cui/source/tabpages.po b/source/af/cui/source/tabpages.po
index 40c70c8f865..efd15ddfced 100644
--- a/source/af/cui/source/tabpages.po
+++ b/source/af/cui/source/tabpages.po
@@ -4,8 +4,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.libreoffice.org/enter_bug.cgi?product=LibreOffice&bug_status=UNCONFIRMED&component=UI\n"
"POT-Creation-Date: 2015-11-10 19:33+0100\n"
-"PO-Revision-Date: 2015-06-25 21:58+0000\n"
-"Last-Translator: system user <>\n"
+"PO-Revision-Date: 2016-02-25 13:08+0000\n"
+"Last-Translator: Noel Grandin <noelgrandin@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: af\n"
"MIME-Version: 1.0\n"
@@ -14,7 +14,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Pootle 2.7\n"
"X-Accelerator-Marker: ~\n"
-"X-POOTLE-MTIME: 1435269492.000000\n"
+"X-POOTLE-MTIME: 1456405708.000000\n"
#: border.src
msgctxt ""
@@ -427,7 +427,7 @@ msgctxt ""
"#6¾ Envelope\n"
"itemlist.text"
msgid "#6¾ Envelope"
-msgstr "C6-koevert"
+msgstr "#6¾-Koevert"
#: page.src
msgctxt ""
@@ -436,7 +436,7 @@ msgctxt ""
"#7¾ (Monarch) Envelope\n"
"itemlist.text"
msgid "#7¾ (Monarch) Envelope"
-msgstr "#8-koevert (Monarch)"
+msgstr "#7¾-koevert (Monarch)"
#: page.src
msgctxt ""
diff --git a/source/af/dbaccess/source/core/resource.po b/source/af/dbaccess/source/core/resource.po
index d363458a979..8eb5d0e9c8d 100644
--- a/source/af/dbaccess/source/core/resource.po
+++ b/source/af/dbaccess/source/core/resource.po
@@ -4,17 +4,17 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.libreoffice.org/enter_bug.cgi?product=LibreOffice&bug_status=UNCONFIRMED&component=UI\n"
"POT-Creation-Date: 2015-05-11 16:12+0200\n"
-"PO-Revision-Date: 2012-11-13 20:14+0000\n"
-"Last-Translator: dwayne <dwayne@translate.org.za>\n"
+"PO-Revision-Date: 2016-02-25 12:40+0000\n"
+"Last-Translator: Noel Grandin <noelgrandin@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: af\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: LibreOffice\n"
+"X-Generator: Pootle 2.7\n"
"X-Accelerator-Marker: ~\n"
-"X-POOTLE-MTIME: 1352837663.0\n"
+"X-POOTLE-MTIME: 1456404042.000000\n"
#: strings.src
msgctxt ""
@@ -423,13 +423,12 @@ msgid ""
msgstr ""
#: strings.src
-#, fuzzy
msgctxt ""
"strings.src\n"
"RID_STR_NO_SUB_FOLDER\n"
"string.text"
msgid "There exists no folder named \"$folder$\"."
-msgstr "Daar is geen tabel genaamd \"$table$\" nie."
+msgstr "Daar is geen tabel genaamd \"$folder$\" nie."
#: strings.src
msgctxt ""
diff --git a/source/af/desktop/source/deployment/gui.po b/source/af/desktop/source/deployment/gui.po
index 5b1a47833eb..fcb7ce9d5ff 100644
--- a/source/af/desktop/source/deployment/gui.po
+++ b/source/af/desktop/source/deployment/gui.po
@@ -4,8 +4,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.libreoffice.org/enter_bug.cgi?product=LibreOffice&bug_status=UNCONFIRMED&component=UI\n"
"POT-Creation-Date: 2015-08-25 12:33+0200\n"
-"PO-Revision-Date: 2015-08-25 15:50+0000\n"
-"Last-Translator: system user <>\n"
+"PO-Revision-Date: 2016-02-25 13:11+0000\n"
+"Last-Translator: Noel Grandin <noelgrandin@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: af\n"
"MIME-Version: 1.0\n"
@@ -14,7 +14,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Pootle 2.7\n"
"X-Accelerator-Marker: ~\n"
-"X-POOTLE-MTIME: 1440517820.000000\n"
+"X-POOTLE-MTIME: 1456405870.000000\n"
#: dp_gui_dialog.src
msgctxt ""
@@ -243,13 +243,12 @@ msgstr ""
"Kliek \\'Kanselleer\\' om op te hou om die uitbreiding te deaktiveer."
#: dp_gui_dialog.src
-#, fuzzy
msgctxt ""
"dp_gui_dialog.src\n"
"RID_STR_UNSUPPORTED_PLATFORM\n"
"string.text"
msgid "The extension '%Name' does not work on this computer."
-msgstr "Die uitbreiding \\'%Name\\' werk nie op hierdie rekenaar nie."
+msgstr "Die uitbreiding '%Name' werk nie op hierdie rekenaar nie."
#: dp_gui_updatedialog.src
msgctxt ""
@@ -306,7 +305,7 @@ msgctxt ""
"RID_DLG_UPDATE_NODEPENDENCY\n"
"string.text"
msgid "Required %PRODUCTNAME version doesn't match:"
-msgstr "Vereiste OpenOffice.org-weergawe pas nie:"
+msgstr "Vereiste %PRODUCTNAME-weergawe pas nie:"
#: dp_gui_updatedialog.src
msgctxt ""
@@ -314,7 +313,7 @@ msgctxt ""
"RID_DLG_UPDATE_NODEPENDENCY_CUR_VER\n"
"string.text"
msgid "You have %PRODUCTNAME %VERSION"
-msgstr "%PRODUCTNAME %PRODUCTVERSION"
+msgstr "U het %PRODUCTNAME %VERSION"
#: dp_gui_updatedialog.src
msgctxt ""
@@ -362,7 +361,7 @@ msgctxt ""
"RID_DLG_UPDATE_IGNORED_UPDATE\n"
"string.text"
msgid "This update will be ignored.\n"
-msgstr "Hierdie kenmerk sal volledig verwyder word."
+msgstr "Hierdie kenmerk sal volledig verwyder word.\n"
#: dp_gui_updateinstalldialog.src
msgctxt ""
diff --git a/source/am/formula/source/core/resource.po b/source/am/formula/source/core/resource.po
index 0c4610de75d..d986327661d 100644
--- a/source/am/formula/source/core/resource.po
+++ b/source/am/formula/source/core/resource.po
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.libreoffice.org/enter_bug.cgi?product=LibreOffice&bug_status=UNCONFIRMED&component=UI\n"
-"POT-Creation-Date: 2016-02-24 17:09+0100\n"
+"POT-Creation-Date: 2016-02-29 18:09+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -20,7 +20,7 @@ msgctxt ""
"SC_OPCODE_IF\n"
"string.text"
msgid "IF"
-msgstr "IF"
+msgstr "ከሆነ"
#: core_resource.src
msgctxt ""
@@ -29,7 +29,7 @@ msgctxt ""
"SC_OPCODE_IF_ERROR\n"
"string.text"
msgid "IFERROR"
-msgstr "IFERROR"
+msgstr "ስህተት ከሆነ"
#: core_resource.src
msgctxt ""
@@ -155,7 +155,7 @@ msgctxt ""
"SC_OPCODE_RANDOM\n"
"string.text"
msgid "RAND"
-msgstr "RAND"
+msgstr "በደፈናው"
#: core_resource.src
msgctxt ""
@@ -188,19 +188,10 @@ msgstr "ዛሬ"
msgctxt ""
"core_resource.src\n"
"RID_STRLIST_FUNCTION_NAMES\n"
-"SC_OPCODE_GET_ACT_TIME\n"
-"string.text"
-msgid "NOW"
-msgstr "NOW"
-
-#: core_resource.src
-msgctxt ""
-"core_resource.src\n"
-"RID_STRLIST_FUNCTION_NAMES\n"
"SC_OPCODE_NO_VALUE\n"
"string.text"
msgid "NA"
-msgstr "NA"
+msgstr "የለም"
#: core_resource.src
msgctxt ""
@@ -209,7 +200,7 @@ msgctxt ""
"SC_OPCODE_CURRENT\n"
"string.text"
msgid "CURRENT"
-msgstr "CURRENT"
+msgstr "አሁን"
#: core_resource.src
msgctxt ""
@@ -551,7 +542,7 @@ msgctxt ""
"SC_OPCODE_IS_EMPTY\n"
"string.text"
msgid "ISBLANK"
-msgstr "ISBLANK"
+msgstr "ባዶ ነው"
#: core_resource.src
msgctxt ""
@@ -560,7 +551,7 @@ msgctxt ""
"SC_OPCODE_IS_STRING\n"
"string.text"
msgid "ISTEXT"
-msgstr "ISTEXT"
+msgstr "ጽሁፍ ነው"
#: core_resource.src
msgctxt ""
@@ -569,7 +560,7 @@ msgctxt ""
"SC_OPCODE_IS_NON_STRING\n"
"string.text"
msgid "ISNONTEXT"
-msgstr "ISNONTEXT"
+msgstr "ጽሁፍ የለም"
#: core_resource.src
msgctxt ""
@@ -605,7 +596,7 @@ msgctxt ""
"SC_OPCODE_IS_REF\n"
"string.text"
msgid "ISREF"
-msgstr "ISREF"
+msgstr "ማመሳከሪያ ነው"
#: core_resource.src
msgctxt ""
@@ -614,7 +605,7 @@ msgctxt ""
"SC_OPCODE_IS_VALUE\n"
"string.text"
msgid "ISNUMBER"
-msgstr "ISNUMBER"
+msgstr "ቁጥር ነው"
#: core_resource.src
msgctxt ""
@@ -623,16 +614,7 @@ msgctxt ""
"SC_OPCODE_IS_FORMULA\n"
"string.text"
msgid "ISFORMULA"
-msgstr "ISFORMULA"
-
-#: core_resource.src
-msgctxt ""
-"core_resource.src\n"
-"RID_STRLIST_FUNCTION_NAMES\n"
-"SC_OPCODE_IS_NV\n"
-"string.text"
-msgid "ISNA"
-msgstr "ISNA"
+msgstr "መቀመሪያ ነው"
#: core_resource.src
msgctxt ""
@@ -641,16 +623,7 @@ msgctxt ""
"SC_OPCODE_IS_ERR\n"
"string.text"
msgid "ISERR"
-msgstr "ISERR"
-
-#: core_resource.src
-msgctxt ""
-"core_resource.src\n"
-"RID_STRLIST_FUNCTION_NAMES\n"
-"SC_OPCODE_IS_ERROR\n"
-"string.text"
-msgid "ISERROR"
-msgstr "ISERROR"
+msgstr "ስህተት ነው"
#: core_resource.src
msgctxt ""
@@ -659,7 +632,7 @@ msgctxt ""
"SC_OPCODE_IS_EVEN\n"
"string.text"
msgid "ISEVEN"
-msgstr "ISEVEN"
+msgstr "ሙሉ ነው"
#: core_resource.src
msgctxt ""
@@ -668,7 +641,7 @@ msgctxt ""
"SC_OPCODE_IS_ODD\n"
"string.text"
msgid "ISODD"
-msgstr "ISODD"
+msgstr "ጎዶሎ ነው"
#: core_resource.src
msgctxt ""
@@ -677,7 +650,7 @@ msgctxt ""
"SC_OPCODE_N\n"
"string.text"
msgid "N"
-msgstr "N"
+msgstr "ቁ"
#: core_resource.src
msgctxt ""
@@ -686,7 +659,7 @@ msgctxt ""
"SC_OPCODE_GET_DATE_VALUE\n"
"string.text"
msgid "DATEVALUE"
-msgstr "DATEVALUE"
+msgstr "የ ቀን ዋጋ"
#: core_resource.src
msgctxt ""
@@ -695,7 +668,7 @@ msgctxt ""
"SC_OPCODE_GET_TIME_VALUE\n"
"string.text"
msgid "TIMEVALUE"
-msgstr "TIMEVALUE"
+msgstr "የ ሰአት ዋጋ"
#: core_resource.src
msgctxt ""
@@ -704,7 +677,7 @@ msgctxt ""
"SC_OPCODE_CODE\n"
"string.text"
msgid "CODE"
-msgstr "CODE"
+msgstr "ኮድ"
#: core_resource.src
msgctxt ""
@@ -713,7 +686,7 @@ msgctxt ""
"SC_OPCODE_TRIM\n"
"string.text"
msgid "TRIM"
-msgstr "TRIM"
+msgstr "መከርከሚያ"
#: core_resource.src
msgctxt ""
@@ -731,7 +704,7 @@ msgctxt ""
"SC_OPCODE_PROPER\n"
"string.text"
msgid "PROPER"
-msgstr "PROPER"
+msgstr "መደበኛ"
#: core_resource.src
msgctxt ""
@@ -749,7 +722,7 @@ msgctxt ""
"SC_OPCODE_LEN\n"
"string.text"
msgid "LEN"
-msgstr "LEN"
+msgstr "እርዝመት"
#: core_resource.src
msgctxt ""
@@ -758,7 +731,7 @@ msgctxt ""
"SC_OPCODE_T\n"
"string.text"
msgid "T"
-msgstr "T"
+msgstr "ጽ"
#: core_resource.src
msgctxt ""
@@ -785,7 +758,7 @@ msgctxt ""
"SC_OPCODE_CHAR\n"
"string.text"
msgid "CHAR"
-msgstr "CHAR"
+msgstr "ባህሪ"
#: core_resource.src
msgctxt ""
@@ -812,7 +785,7 @@ msgctxt ""
"SC_OPCODE_UNICODE\n"
"string.text"
msgid "UNICODE"
-msgstr "UNICODE"
+msgstr "ዩኒኮድ"
#: core_resource.src
msgctxt ""
@@ -857,7 +830,7 @@ msgctxt ""
"SC_OPCODE_STD_NORM_DIST\n"
"string.text"
msgid "NORMSDIST"
-msgstr "NORMSDIST"
+msgstr "የተጠራቀመ ስርጭት"
#: core_resource.src
msgctxt ""
@@ -866,7 +839,7 @@ msgctxt ""
"SC_OPCODE_STD_NORM_DIST_MS\n"
"string.text"
msgid "NORM.S.DIST"
-msgstr "NORM.S.DIST"
+msgstr "የተጠራቀመ ስርጭት ተግባር"
#: core_resource.src
msgctxt ""
@@ -929,7 +902,7 @@ msgctxt ""
"SC_OPCODE_ERROR_TYPE\n"
"string.text"
msgid "ERRORTYPE"
-msgstr "ERRORTYPE"
+msgstr "የ ስህተትአይነት"
#: core_resource.src
msgctxt ""
@@ -938,7 +911,7 @@ msgctxt ""
"SC_OPCODE_ERROR_TYPE_ODF\n"
"string.text"
msgid "ERROR.TYPE"
-msgstr "ERROR.TYPE"
+msgstr "የ ስህተት.አይነት"
#: core_resource.src
msgctxt ""
@@ -1019,7 +992,7 @@ msgctxt ""
"SC_OPCODE_FLOOR\n"
"string.text"
msgid "FLOOR"
-msgstr "FLOOR"
+msgstr "ወለል"
#: core_resource.src
msgctxt ""
@@ -1055,7 +1028,7 @@ msgctxt ""
"SC_OPCODE_ROUND\n"
"string.text"
msgid "ROUND"
-msgstr "ROUND"
+msgstr "ማጠጋጊያ"
#: core_resource.src
msgctxt ""
@@ -1064,7 +1037,7 @@ msgctxt ""
"SC_OPCODE_ROUND_UP\n"
"string.text"
msgid "ROUNDUP"
-msgstr "ROUNDUP"
+msgstr "ማጠጋጊያ ወደ ላይ"
#: core_resource.src
msgctxt ""
@@ -1073,7 +1046,7 @@ msgctxt ""
"SC_OPCODE_ROUND_DOWN\n"
"string.text"
msgid "ROUNDDOWN"
-msgstr "ROUNDDOWN"
+msgstr "ማጠጋጊያ ወደ ታች"
#: core_resource.src
msgctxt ""
@@ -1082,7 +1055,7 @@ msgctxt ""
"SC_OPCODE_TRUNC\n"
"string.text"
msgid "TRUNC"
-msgstr "TRUNC"
+msgstr "ማሳጠሪያ"
#: core_resource.src
msgctxt ""
@@ -1127,7 +1100,7 @@ msgctxt ""
"SC_OPCODE_MOD\n"
"string.text"
msgid "MOD"
-msgstr "MOD"
+msgstr "ቀሪ"
#: core_resource.src
msgctxt ""
@@ -1136,7 +1109,7 @@ msgctxt ""
"SC_OPCODE_SUM_PRODUCT\n"
"string.text"
msgid "SUMPRODUCT"
-msgstr "SUMPRODUCT"
+msgstr "የ ድምር ውጤት"
#: core_resource.src
msgctxt ""
@@ -1145,7 +1118,7 @@ msgctxt ""
"SC_OPCODE_SUM_SQ\n"
"string.text"
msgid "SUMSQ"
-msgstr "SUMSQ"
+msgstr "የ ስኴር ድምር"
#: core_resource.src
msgctxt ""
@@ -1208,7 +1181,7 @@ msgctxt ""
"SC_OPCODE_MIN\n"
"string.text"
msgid "MIN"
-msgstr "MIN"
+msgstr "አነስተኛ"
#: core_resource.src
msgctxt ""
@@ -1217,7 +1190,7 @@ msgctxt ""
"SC_OPCODE_MIN_A\n"
"string.text"
msgid "MINA"
-msgstr "MINA"
+msgstr "ትንሽ ዋጋ"
#: core_resource.src
msgctxt ""
@@ -1226,7 +1199,7 @@ msgctxt ""
"SC_OPCODE_MAX\n"
"string.text"
msgid "MAX"
-msgstr "MAX"
+msgstr "ከፍተኛ"
#: core_resource.src
msgctxt ""
@@ -1235,7 +1208,7 @@ msgctxt ""
"SC_OPCODE_MAX_A\n"
"string.text"
msgid "MAXA"
-msgstr "MAXA"
+msgstr "ከፍተኛ ዋጋ"
#: core_resource.src
msgctxt ""
@@ -1262,7 +1235,7 @@ msgctxt ""
"SC_OPCODE_AVERAGE\n"
"string.text"
msgid "AVERAGE"
-msgstr "AVERAGE"
+msgstr "መከከለኛ"
#: core_resource.src
msgctxt ""
@@ -1271,7 +1244,7 @@ msgctxt ""
"SC_OPCODE_AVERAGE_A\n"
"string.text"
msgid "AVERAGEA"
-msgstr "AVERAGEA"
+msgstr "መካከለኛ ዋጋ"
#: core_resource.src
msgctxt ""
@@ -1649,7 +1622,7 @@ msgctxt ""
"SC_OPCODE_SHEETS\n"
"string.text"
msgid "SHEETS"
-msgstr "SHEETS"
+msgstr "ወረቀቶች"
#: core_resource.src
msgctxt ""
@@ -1676,7 +1649,7 @@ msgctxt ""
"SC_OPCODE_SHEET\n"
"string.text"
msgid "SHEET"
-msgstr "SHEET"
+msgstr "ወረቀት"
#: core_resource.src
msgctxt ""
@@ -1712,7 +1685,7 @@ msgctxt ""
"SC_OPCODE_RATE\n"
"string.text"
msgid "RATE"
-msgstr "RATE"
+msgstr "የ ወለድ መጠን"
#: core_resource.src
msgctxt ""
@@ -1775,7 +1748,7 @@ msgctxt ""
"SC_OPCODE_SUB_TOTAL\n"
"string.text"
msgid "SUBTOTAL"
-msgstr "SUBTOTAL"
+msgstr "ንዑስ ድምር"
#: core_resource.src
msgctxt ""
@@ -1829,7 +1802,7 @@ msgctxt ""
"SC_OPCODE_DB_MAX\n"
"string.text"
msgid "DMAX"
-msgstr "DMAX"
+msgstr "ከፍተኛ ዳታ"
#: core_resource.src
msgctxt ""
@@ -1838,7 +1811,7 @@ msgctxt ""
"SC_OPCODE_DB_MIN\n"
"string.text"
msgid "DMIN"
-msgstr "DMIN"
+msgstr "አነስተኛ ዳታ"
#: core_resource.src
msgctxt ""
diff --git a/source/am/helpcontent2/source/text/schart/01.po b/source/am/helpcontent2/source/text/schart/01.po
index 87c2443c7d2..b2f7bcd4f72 100644
--- a/source/am/helpcontent2/source/text/schart/01.po
+++ b/source/am/helpcontent2/source/text/schart/01.po
@@ -4,7 +4,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.libreoffice.org/enter_bug.cgi?product=LibreOffice&bug_status=UNCONFIRMED&component=UI\n"
"POT-Creation-Date: 2015-11-10 19:33+0100\n"
-"PO-Revision-Date: 2016-02-18 00:18+0000\n"
+"PO-Revision-Date: 2016-02-25 17:14+0000\n"
"Last-Translator: Samson B <sambelet@yahoo.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: am\n"
@@ -14,7 +14,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Pootle 2.7\n"
"X-Accelerator-Marker: ~\n"
-"X-POOTLE-MTIME: 1455754693.000000\n"
+"X-POOTLE-MTIME: 1456420458.000000\n"
#: 03010000.xhp
msgctxt ""
@@ -145,7 +145,7 @@ msgctxt ""
"par_id8111819\n"
"help.text"
msgid "The order of the data series in the chart is the same as in the data table. Use the <emph>Move Series Right</emph> icon to switch the current column with its neighbor on the right."
-msgstr ""
+msgstr "የ ተከታታይ ዳታ ደንብ ተመሳሳይ ነው ከ chart ዳታ ሰንጠረዥ ጋር: ይጠቀሙ የ <emph>ተከታታይ ወደ ቀኝ ማንቀሳቀሻ</emph>ምልክት ለ መቀየር ወደ አሁኑ አምድ ጎረቤት በ ቀኝ በኩል"
#: 03010000.xhp
msgctxt ""
@@ -153,7 +153,7 @@ msgctxt ""
"par_id9116794\n"
"help.text"
msgid "The order of the categories or data points in the chart is the same as in the data table. Use the <emph>Move Row Down</emph> icon to switch the current row with its neighbor below."
-msgstr ""
+msgstr "የ ተከታታይ ዳታ ደንብ ተመሳሳይ ነው ከ chart ዳታ ሰንጠረዥ ጋር: ይጠቀሙ የ <emph>ረድፍ ወደ ታች ማንቀሳቀሻ</emph>ምልክት ለ መቀየር ወደ አሁኑ ረድፍ ጎረቤት በ ታች በኩል"
#: 03010000.xhp
msgctxt ""
diff --git a/source/am/helpcontent2/source/text/shared/00.po b/source/am/helpcontent2/source/text/shared/00.po
index eb44e51c4af..ebdf7217a5d 100644
--- a/source/am/helpcontent2/source/text/shared/00.po
+++ b/source/am/helpcontent2/source/text/shared/00.po
@@ -4,7 +4,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.libreoffice.org/enter_bug.cgi?product=LibreOffice&bug_status=UNCONFIRMED&component=UI\n"
"POT-Creation-Date: 2015-11-10 19:33+0100\n"
-"PO-Revision-Date: 2016-02-22 16:26+0000\n"
+"PO-Revision-Date: 2016-02-24 19:27+0000\n"
"Last-Translator: Samson B <sambelet@yahoo.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: am\n"
@@ -14,7 +14,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Pootle 2.7\n"
"X-Accelerator-Marker: ~\n"
-"X-POOTLE-MTIME: 1456158375.000000\n"
+"X-POOTLE-MTIME: 1456342053.000000\n"
#: 00000001.xhp
msgctxt ""
@@ -117,7 +117,7 @@ msgctxt ""
"78\n"
"help.text"
msgid "You can type a numerical value into the field next to the spin button, or select the value with the up-arrow or down-arrow symbols on the spin button. On the keyboard you can press the up arrow and down arrow keys to increase or reduce the value. You can press the Page Up and Page Down keys to set the maximum and minimum value."
-msgstr ""
+msgstr "እርስዎ መጻፍ ይችላሉ የ ቁጥር ዋጋ ወደ ሜዳ ውስጥ ከ ማዞሪያ ቁልፍ አጠገብ ባለው: ወይንም ይምረጡ ዋጋ በ ቀስት ወደ-ላይ ወይንም ቀስት ወደ-ታች ምልክቶችን ማዞሪያ ቁልፍ: በ ፊደል ገበታ ላይ ይጫኑ ገጽ ወደ ላይ እና ገጽ ወደ ታች ቁልፎችን: ከፍተኛ እና አነስተኛ ዋጋዎችን ለማሰናዳት"
#: 00000001.xhp
msgctxt ""
@@ -216,7 +216,7 @@ msgctxt ""
"7\n"
"help.text"
msgid "You can enter values in the input fields in different units of measurement. The default unit is inches. However, if you want a space of exactly 1cm, then type \"1cm\". Additional units are available according to the context, for example, 12 pt for a 12 point spacing. If the value of the new unit is unrealistic, the program uses a predefined maximum or minimum value."
-msgstr ""
+msgstr "እርስዎ ዋጋዎችን ማስገባት ይችላሉ በ ማስገቢያ ሜዳዎች የተለያዩ መለኪያ ክፍሎችን: ነባር መለኪያው ኢንች ነው: ነገር ግን: እርስዎ በ ትክክል ስፋት ከፈለጉ 1ሲሚ: ይጻፉ \"1ሲሚ\". ተጨማሪ መለኪያዎች ዝግጁ ናቸው እንደ አገባቡ: ለምሳሌ: 12 ነጥብ ለ 12 ነጥብ ክፍተት: አዲሱ መለኪያ እውነትን መሰረት ያላደረገ ከሆነ : ፕሮግራሙ በ ቅድሚያ የተወሰነ ከፍተኛ ወይንም አነስተኛ ዋጋ ይጠቀማል"
#: 00000001.xhp
msgctxt ""
@@ -475,7 +475,7 @@ msgctxt ""
"73\n"
"help.text"
msgid "<ahelp hid=\"HID_TABDLG_STANDARD_BTN\">View the selections in the dialog made in the previous step. The current settings remain unchanged.</ahelp> This button can only be activated from page two on."
-msgstr ""
+msgstr "<ahelp hid=\"HID_TABDLG_STANDARD_BTN\">ባለፈው ደረጃ ላይ የ ተመረጠውን ንግግር ማሳያ: የ አሁኑ ማሰናጃ እንደ ነበር ይቆያል</ahelp> ይህ ገጽ ዝግጁ የሚሆነው ከ ገጽ ሁለት በኋላ ነው"
#: 00000001.xhp
msgctxt ""
diff --git a/source/am/helpcontent2/source/text/shared/01.po b/source/am/helpcontent2/source/text/shared/01.po
index 9df6b7a7e88..920eb24e626 100644
--- a/source/am/helpcontent2/source/text/shared/01.po
+++ b/source/am/helpcontent2/source/text/shared/01.po